我有一个文本框,它绑定到属性ItemID
,就像这样。
private string _itemID;
public string ItemID {
get { return _itemID; }
set {
_itemID = value;
}
}
文本框的XAML如下:
<TextBox Text="{Binding Path=ItemID, Mode=TwoWay}" Name="txtItemID" />
问题是,ItemID
的值在我输入时不会立即更新,
导致Add
按钮被禁用(命令),直到我通过按Tab键失去文本框的焦点。
答案 0 :(得分:5)
是的,默认情况下,仅在丢失焦点时才会更新属性。这是为了通过避免每次击键时更新绑定属性来提高性能。您应该使用 UpdateSourceTrigger = PropertyChanged 。
试试这个:
<TextBox
Text="{Binding Path=ItemID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Name="txtItemID" />
您还应该为ViewModel实现INotifyPropertyChanged接口。否则,如果在ViewModel中更改了属性,UI将无法了解它。因此它不会更新。 This可能有助于实施。
答案 1 :(得分:2)
您需要在setter中触发OnPropertyChanged事件,否则框架无法知道您编辑了该属性。
以下是一些例子: