我正在使用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