我在带有MVVM(带有Caliburn Micro框架)的WPF应用程序中使用C#。我试图将2个元素(一个TextBlock和一个TextBox)绑定到位于模型视图中的相同属性。我的财产称为名字。 我有两个选项可以进行绑定: Binding Path = FirstName 或 x:Name = FirstName 。编辑文本框时,只有以某种方式绑定(请参见代码),才能看到文本块中的更改。知道为什么其他方式不起作用? (当我在文本框中键入内容时,我看不到文本块更新)
我尝试了不同的 mode 选项(两种方法,一种方法等)。 NotifyOfPropertyChange似乎可以正常工作。
<!-- This works -->
<TextBlock Text="{Binding Path=FirstName}"/>
<TextBox x:Name="FirstName"/>
<!-- This does not work -->
<TextBlock x:Name="FirstName"/>
<TextBox Text="{Binding Path=FirstName, Mode=TwoWay}"/>
答案 0 :(得分:1)
在第二个示例中,您需要指定UpdateSourceTrigger=PropertyChanged
:
<TextBlock x:Name="FirstName"/>
<TextBox Text="{Binding Path=FirstName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
否则,仅当TextBox失去焦点时才更新源。