如何将TextBlock的text属性绑定到TextBox的text属性

时间:2011-01-31 18:31:59

标签: wpf binding

我有一个有两页的WPF应用程序。在第一页上,有一个TextBox(boxSource)。在第二页,我有一个TextBlock(blockDestination)。我想在XAML中数据绑定,boxSource的Text属性为blockDestination的Text属性。

初始化应用程序时,我将第2页的DataContext设置为第1页。我按如下方式设置blockDestination:

<TextBlock Name="blockDestination" Grid.Row="0" Grid.Column="1" Text="{Binding boxSource, Path=Text, Mode=OneWay}" />

这不会拾取TextBox的值。我的猜测是因为TextBox是变量而不是属性?

任何人都可以解释这个问题,并且有一个优雅的解决方案吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

要使XAML正常工作,您的“第一页”将需要设置为第二页的数据上下文,并将boxSource变量定义为属性,这样在setter中,您可以引发PropertyChanged事件。

但是,Matthias是正确的,这是实现这一点的一种非常脆弱的方式,并且从长远来看MVVM方法将更加强大。

答案 1 :(得分:1)

一个优雅的解决方案是定义所有页面共有的视图模型。您应始终绑定到视图模型的属性,并应避免绑定到UI元素。使用视图模型,您始终可以访问所有必要的值,并在不同的页面中定义多个演示文稿。

我已经阅读了一些关于具有自己的对象空间的页面的内容,因此UI元素在不同的页面中可以具有相同的名称。也可能在加载第二页后第一页不可用。然后绑定目标将不可用。