0

我有一个文本框,它绑定到这样的属性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 键失去文本框的焦点。

4

2 回答 2

5

是的,默认情况下,属性只会在失去焦点时更新。这是通过避免在每次击键时更新绑定属性来提高性能。您应该使用UpdateSourceTrigger=PropertyChanged

试试这个:

<TextBox 
    Text="{Binding Path=ItemID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
    Name="txtItemID" />

您还应该为您的 ViewModel 实现 INotifyPropertyChanged 接口。否则,如果 ViewModel 中的属性发生更改,UI 将不会知道它。因此它不会被更新。可能有助于实施。

于 2013-05-21T08:20:03.457 回答
2

您需要在设置器中触发 OnPropertyChanged 事件,否则框架无法知道您编辑了属性。

这里有些例子:

在没有魔术字符串的情况下实现 NotifyPropertyChanged

对象更新后通知 PropertyChanged

于 2013-05-21T08:17:57.207 回答