为什么数据绑定不能与PropertyChanged一起使用?

时间:2014-01-07 06:33:33

标签: c# xaml windows-phone-8

我是XAML和Windows 8手机开发和学习数据绑定的新手。 Here,建议我需要使用,

UpdateSourceTrigger=PropertyChanged

但是当我尝试在我的xaml中使用它时,它会给出错误,因为'请求的值'PropertyChanged'找不到。相反,它正在使用,

UpdateSourceTrigger=Default

我做错了,或者在新版本中弃用了。

我的代码示例,

 <TextBox x:Name="txt1" Height="100" Width="100"></TextBox>

 <TextBlock Grid.Row="1" x:Name="txt2" Height="100" Width="100" 
    Text="{Binding Text,ElementName=txt1,
 UpdateSourceTrigger=PropertyChanged}"></TextBlock>

感谢。

2 个答案:

答案 0 :(得分:4)

Windows Phone XAML不支持

UpdateSourceTrigger=PropertyChanged

您可以改用UpdateSourceTrigger=Explicit, 并在后面的代码中处理源更新:

private void OnTextBoxTextChanged( object sender, TextChangedEventArgs e )
{
  TextBox textBox = sender as TextBox;
  BindingExpression bindingExpr = textBox.GetBindingExpression( TextBox.TextProperty );
  bindingExpr.UpdateSource();
}

另一种选择是使用Coding4Fun's library BindingHelper。在这种情况下,语法将是:

<TextBox   
  Text="{Binding FooBar, Mode=TwoWay}" 
  local:TextBinding.UpdateSourceOnChange="True" />

答案 1 :(得分:0)

UpdateSourceTrigger与目标控件的更新无关。相反,例如,当您执行TextBox的某些验证时,它非常有用。

如果在XAML代码后面有(视图)模型,则应添加INotifyPropertyChanged接口并按照指南教导实现它。

以下是一个示例:http://www.codeproject.com/Articles/41817/Implementing-INotifyPropertyChanged

XAML代码段应该可以使用,至少对于WPF而言。什么不起作用?