我正在使用MVVM模式。我有一个
Text属性绑定到ViewModel的文本框(VM支持INotifyProperyChange)Text属性
其命令绑定到VM的ICommand属性类型的按钮
您可能会认为这是一个SearchTextBox和SearchButton
我面临的问题是,当我在SearchTextBox中输入文本并单击SearchButton时,将仅调用与SearchTextBox绑定的set
属性实现,而对SearchButton单击的Command
则永远不会执行(注意: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
处理程序始终返回True 最佳答案
尝试编写一个重现该问题的小型测试项目来找出问题,如果可以的话,请发布代码。通常,当您在主项目之外复制问题时,问题和解决方案就很明显。