2013-05-21 99 views
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键丢失文本框的焦点。

+3

嗨Edwin,我认为你应该实现INotifyPropertyChanged事件处理程序。这可能是它没有更新的原因。 INotifyPropertyChanged在您的属性中设置并通知UI它已被更改。另外,在你的xaml中,添加; 'UpdateSourceTrigger = PropertyChanged' –

+0

我同意你的意见@ gregory.bmclub –

+0

我的回答对你有帮助吗?如果确实如此,请将其标记为答案。谢谢。 –

回答

5

是,默认情况下,该属性将只能在失去重心更新。这是为了通过避免每次按键更新绑定属性来提高性能。您应该使用UpdateSourceTrigger = PropertyChanged

试试这个:

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

你也应该实现INotifyPropertyChanged接口,为您的视图模型。否则,如果ViewModel中的属性被更改,UI将不会了解它。因此它不会被更新。 This可能有助于实施。