1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
public class RelayCommand : ICommand
{
	private Action<object> execute;

	private Predicate<object> canExecute;

	private event EventHandler CanExecuteChangedInternal;

	public RelayCommand(Action<object> execute)
		: this(execute, DefaultCanExecute)
	{

	}

	public RelayCommand(Action<object> execute, Predicate<object> canExecute)
	{
		if (execute == null)
		{
			throw new ArgumentNullException("execute");
		}

		if (canExecute == null)
		{
			throw new ArgumentNullException("canExecute");
		}

		this.execute = execute;
		this.canExecute = canExecute;
	}

	public event EventHandler CanExecuteChanged
	{
		add
		{
			CommandManager.RequerySuggested += value;
			this.CanExecuteChangedInternal += value;
		}

		remove
		{
			CommandManager.RequerySuggested -= value;
			this.CanExecuteChangedInternal -= value;
		}
	}

	public bool CanExecute(object parameter)
	{
		return this.canExecute != null && this.canExecute(parameter);
	}

	public void Execute(object parameter)
	{
		this.execute(parameter);
	}

	public void OnCanExecuteChanged()
	{
		EventHandler handler = this.CanExecuteChangedInternal;
		if (handler != null)
		{
			handler.Invoke(this, EventArgs.Empty);
		}
	}

	public void Destroy()
	{
		this.canExecute = _ => false;
		this.execute = _ => { return; };
	}

	private static bool DefaultCanExecute(object parameter)
	{
		return true;
	}
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
public class BaseModel : INotifyPropertyChanged
{

	public event PropertyChangedEventHandler PropertyChanged;
	protected void RaisePropertyChanged(string propertyname)
	{
		PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyname));
	}

	public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
	public static void RaiseStaticPropertyChanged(string propName)
	{
		EventHandler<PropertyChangedEventArgs> handler = StaticPropertyChanged;
		if (handler != null)
			handler(null, new PropertyChangedEventArgs(propName));

	}
}
1
2
3
4
5
6
7
8
public class MainWindowViewModel : BaseViewModel
    {
        public MainWindowViewModel()
        {

        }

    }
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = new MainWindowViewModel();
        }
    }




TOP50 Gry