Data binding “;UpdateSourceTrigger=PropertyChanged”;WinRT XAML中文本框的等效项

Data binding “;UpdateSourceTrigger=PropertyChanged”;WinRT XAML中文本框的等效项,data-binding,windows-8,winrt-xaml,Data Binding,Windows 8,Winrt Xaml,在WPF中,每当用户对数据进行任何更改时,我们都可以通过如下方式利用UpdateSourceRigger来更新基础数据模型: <TextBox Text="{Binding Path=TextProperty, UpdateSourceTrigger=PropertyChanged}"/> (sender as TextBox).GetBindingExpression(TextBox.TextProperty).UpdateSource(); 在Windows8中,我假设Upd

在WPF中,每当用户对数据进行任何更改时,我们都可以通过如下方式利用UpdateSourceRigger来更新基础数据模型:

<TextBox Text="{Binding Path=TextProperty, UpdateSourceTrigger=PropertyChanged}"/>
(sender as TextBox).GetBindingExpression(TextBox.TextProperty).UpdateSource();
在Windows8中,我假设UpdateSourceTrigger也会被省略——我是正确的。然而,我很惊讶地发现GetBindingExpression()也丢失了

在Windows 8中,我们使用UpdateSourceTrigger在WPF中实现的功能和使用GetBindingExpression()在Windows Phone中实现的功能,最好的技术是什么

请注意:此问题适用于Windows 8(Metro)开发;另一个问题()是针对Windows Phone开发的,不要混淆

作为一项研究,(我创建的)使用TextBox覆盖在两个属性之间交换文本值,从而导致更新。它是基于。但是,还有更好的办法吗?优雅的东西?

杰瑞

您应该使用的模式将实现INotifyPropertyChanged。 以下是MSDN中的示例:

这样,任何绑定到支持属性或字段的XAML对象都将在支持字段的值由于调用NotifyPropertyChanged()方法而发生更改时得到通知

如果要实现此模式,则不需要显式定义何时更新UI,所有绑定到Notifyable propertied的UI元素都将在源更改时更新

对于实现INotifyPropertyChanged的类

我使用一个代码段来创建大多数类似这样的属性(如果它们有可能被绑定或需要通知另一个对象):


似乎没有
GetBindingExpression
或等效的解决方法。但是,您可以像这样扩展文本框:

但这并不能解决问题本身。。。(真的很伤心)

另见:


似乎在Windows 8.1中提供了
UpdateSourceTrigger
GetBindingExpression
。感谢上述Rico Suter和本问题的HDW生产:


对不起,伙计,这只是实现绑定。这并不能解决问题。试着运行它,你会看到Setter在用户离开文本框之前不会启动。怎么会没有呢?我想MS dog fooding已经停止使用RT XAML了?我想它在Win8.1中已经修复了:啊,而且
updateSourceRigger
就在那里。天哪!多大的疏忽啊。
private PropertyChangedEventArgs myVarChangedEventArgs = new PropertyChangedEventArgs("MyProperty");
private int myVar;
public int MyProperty
{
get { return myVar; }
set
  {
     if (myVar != value)
     {
        myVar = value;
        NotifyPropertyChanged(myVarChangedEventArgs);
      }
   }
}