我正在尝试使用Galasoft MVVMLight的RelayCommand执行RelayCommand(位于我的CodeBehind中)。

MainPage.xaml.cs

public MainPage()
{
    InitializeComponent();
    DataContext = this;
    MyCommand = new RelayCommand(Methode);
}

#region Commands
public RelayCommand MyCommand { get; private set; }
#endregion

private void Methode()
{
    int i = 1;
}


MainPage.xaml:

<Button Command="{Binding MyCommand}"/>


不幸的是,该命令未触发/未调用该方法。其他绑定的元素(如ImageSource等)也可以正常工作。

最佳答案

设置RelayCommand之前,尝试创建新的DataContext

设置DataContext会触发数据绑定引擎来更新绑定。由于尚未设置MyCommand属性,因此ButtonCommand将为null。设置RelayCommand后创建新的DataContext不会通知Button该属性的更新。

在设置Command之前创建DataContext是一种解决方案,另一种解决方案是实现INotifyPropertyChanged界面并在设置PropertyChanged之后(或在setter中需要后备字段)引发MyCommand事件。

关于c# - RelayCommand没有执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25546916/

10-10 14:57