如何在文本更改时使按钮绑定到ICommand启用/禁用,而不是失去TextBox的焦点

时间:2014-07-14 17:13:20

标签: xaml mvvm winrt-xaml icommand

我有一个带有“保存”按钮的Windows应用商店XAML应用,该按钮指向我的ViewModel中的ICommand属性。

<Button Content="Save" 
    Command="{Binding DataContext.SaveNewNote, ElementName=grid, Mode=OneWay}"
    CommandParameter="{Binding DataContext.CurrentItem, ElementName=grid}" />

在我的Note模型的propertychanged事件中,每次(每次击键)都会触发CanExecutedChanged事件。但是,只有在离开其中一个相关文本框的焦点后,此按钮才会启用/禁用。

换句话说,有一个“名称”文本框。如果String.IsNullOrWhiteSpace(Name.Text),则将CanExecute设置为false。这似乎是每次按键都会执行的。

我希望看到这个绑定的Save按钮启用和禁用每次击键。但是,只有当我从文本框中跳出时,才会看到按钮启用/禁用。

如何在每次击键时获得此绑定按钮以尊重CanExecuteChanged事件,而不是在texbox失去焦点时?

1 个答案:

答案 0 :(得分:0)

@will和@patrick对原帖的评论都有正确的答案。为此,您必须设置&#34; UpdateSourceTrigger&#34;到&#34; PropertyChanged&#34;这给出了预期的结果。

<TextBox Grid.Row="1" PlaceholderText="Enter a short description here" 
    Text="{Binding NoteAbstract, Mode=TwoWay, 
    UpdateSourceTrigger=PropertyChanged}">
</TextBox>