我正在使用MVVM模式。我有一個TextBox和按鈕 - 綁定和命令
- 文本框,其文本屬性綁定到視圖模型的(VM支持INotifyProperyChange)Text屬性
- 按鈕,其命令綁定到虛擬機的ICommand的屬性類型
你可能會認爲這是一個SearchTextBox和SearchButton
我面臨的問題是,當我在SearchTextBox中輸入文本並單擊SearchButton時,只有SearchTextBox綁定set
屬性實現被調用,但(注意:ICommand CanExecute handler
總是返回True)
它工作正常,如果我使用TAB鍵標籤出SearchTextBox或使用鼠標從SearchTextBox移動焦點,然後單擊SearchButton。這意味着做兩個單獨的行動來分別觸發兩個事件。理想情況下,單擊SearchButton應導致SearchTextBox鬆散焦點,因此調用Set
屬性,並單擊Search按鈕轉換爲命令執行。
代碼是如下
XAML:
<TextBox Text="{Binding Path=SearchText,Mode=TwoWay}"/>
<Button Content="Search" Width="100" Command="{Binding MySearchCommand}"/>
C#:
public String _SearchText;
public String SearchText
{
get { return _SearchText; }
set
{
_SearchText = value;
OnPropertyChanged("SearchText");
}
}
ICommand
實現與沒有花哨的代碼和CanExecute
處理標準implemenetation總是返回true
你怎麼說當你的CanExecute運行你的命令不執行?你可以在這裏發佈實現嗎?(你的Execute方法) – Amsakanna 2010-05-19 12:13:12
我認爲字節意味着CanExecute沒有運行,但是被定義爲總是返回true。 – 2010-05-19 12:40:57
只有一些愚蠢的錯誤,請張貼您的代碼:) – 2010-05-19 12:41:30