我有一个Windows电话应用, TextBox 双向绑定到 ViewModel 中的字符串属性,并且在同一页面上有按钮绑定到 ViewModel 中的MVVM Light RelayCommand 属性。 relay命令的 CanExecute 方法检查 TextBox 是否为空,如果是,则返回FALSE。否则它返回TRUE,因此用户只有在输入一些文本后按下按钮。
问题是我需要它在每次击键时生成属性更改通知,而不仅仅是当 TextBox 失去焦点时。我做了一些阅读,并且这样做的方法是将 TextBox 上的 UpdateSourceTrigger 设置为 PropertyChanged 。但是,在 Windows Phone 8 中,似乎不支持枚举值,只有默认和显式。我在 XAML编辑器和创建数据绑定编辑器中对此进行了双重检查。因此我被迫使用 Explicit 选项,现在必须根据 MSDN 在TextBox TextChanged 事件处理程序中调用以下代码。文档:
private void txtInput_TextChanged(object sender, TextChangedEventArgs e)
{
BindingExpression be = txtInput.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
}
Propertychanged 选项在Windows Phone 8中的位置是什么?我只是做错了吗?显然,每当我想用 TextBox 进行这种行为时,我都希望避免这种额外的管道。我可以编写一个派生的 TextBox 控件来获取此行为,但如果我不需要,我当然想知道。
答案 0 :(得分:1)
Windows Phone基于Silverlight,而不是WPF。 Silverlight是WPF的一种子集,或者更好地说Silverlight is slimmer than WPF。因此,在WPF中看到Windows Phone中没有的内容并不奇怪,UpdateSourceTrigger=PropertyChanged
是其他缺失功能(another example)中的一个示例。
所以,不幸的是,你似乎不得不采用目前的做法。