2014-08-28 95 views
0

我正在嘗試使用Galasoft MVVMLight的RelayCommand執行RelayCommand(在我的CodeBehind中)。RelayCommand沒有執行

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,...工作正常。

回答

3

嘗試在設置DataContext之前創建新的RelayCommand

設置DataContext會觸發數據綁定引擎更新綁定。由於MyCommand屬性尚未設置,所以Button s Command將爲空。在設置DataContext之後創建新的RelayCommand將不會通知Button該屬性的更新。

設置DataContext之前創建Command是一個解決方案,另一個正在實施INotifyPropertyChanged接口和設置MyCommand(或在設定器,要求支持字段)之後提高PropertyChanged事件。

+0

工作,謝謝...不知道這很簡單。也認爲如果我在開始或結束時設置DataContext,它將沒有什麼區別。 – Rudi 2014-08-28 11:05:46

+1

它在這種情況下有所不同,因爲設置datacontext會觸發綁定的更新。 Command綁定找到您的命令屬性,但尚未設置。設置datacontext後,設置command屬性不會通知您的按鈕已更改,因此按鈕不會知道該按鈕。 – 2014-08-28 11:07:53

+0

好吧,我明白了。感謝您的澄清。 – Rudi 2014-08-28 11:09:48