[英]How to update the value of a WPF binding from the C# code behind?
使用以下代码在文本框上绑定属性。 在 UI 中更改文本框值时,属性值正在刷新。 但是我在后面的代码中将值分配给了文本框 [txtNoOfSessions.Text = "1"] ,但它没有反映属性中的值。
<TextBox x:Name="txtNoOfSessions"
Text="{Binding Path=NoOfSessions,Mode=TwoWay}"
Height="23" Width="120" />
在属性上使用 INotifyPropertyChanged。 否则,它不会在 UI 加载后更新。
http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx
例子:
public string PhoneNumber
{
get
{
return this.phoneNumberValue;
}
set
{
if (value != this.phoneNumberValue)
{
this.phoneNumberValue = value;
NotifyPropertyChanged("PhoneNumber");
}
}
}
这个答案需要更新或删除。
通常我尽量不从 UI 后面的代码更新数据绑定值,但是如果我必须使用 UI 对象的DataContext
并更新绑定属性。
在您的示例中,它看起来像这样:
MyDataObject obj = txtNoOfSessions.DataContext as MyDataObject;
if (obj != null)
obj.NoOfSessions = "New Value";
Rachel 是对的,你不能在不覆盖绑定本身的情况下直接在控件上更新绑定值。
您可以使用上面的或((dynamic)this.DataContext).NoOfSession = "New Value";
我是怎么做的。
这样,代码将在不知道视图模型类型的情况下工作。 视图模型甚至可以是一个ExpandoObject
而不是一个类,它仍然可以工作。
请注意, ExpandoObject
数据绑定在 Windows 应用商店应用中被破坏。
txtNoOfSession.Text 已绑定。 设置绑定属性的值。 这在您的视图模型中设置了 NoOfSessions。
NoOfSessions = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.