Sic10/SicUI/Controls/Common/ViewModelControl.cs

44 lines
1.0 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows.Input;
using Aitex.Core.UI.MVVM;
using Aitex.Core.Util;
using Aitex.Core.Utilities;
namespace SicUI.Controls.Common
{
public class ViewModelControl : UserControl, INotifyPropertyChanged, IViewModelControl
{
public event PropertyChangedEventHandler PropertyChanged;
public void SubscribeKeys(SubscriptionViewModelBase baseModel)
{
baseModel.SubscribeKeys(this);
}
public void InvokePropertyChanged()
{
if (PropertyChanged != null)
{
var ps = this.GetType().GetProperties();
foreach (var p in ps)
{
if (!p.GetCustomAttributes(false).Any(attribute => attribute is IgnorePropertyChangeAttribute))
PropertyChanged(this, new PropertyChangedEventArgs(p.Name));
if (p.PropertyType == typeof(ICommand))
{
if (p.GetValue(this, null) is IDelegateCommand cmd)
cmd.RaiseCanExecuteChanged();
}
}
}
}
}
}