C# 由于INotifyPropertyChanged,属性未更新

C# 由于INotifyPropertyChanged,属性未更新,c#,wpf,mvvm,binding,propertychanged,C#,Wpf,Mvvm,Binding,Propertychanged,我对实施INotifyPropertyChanged的后果以及由于INotifyPropertyChanged而未更新的属性有疑问 假设我有一个带有文本块和文本框的窗口。两者都附着到我的ViewModel中的同一属性(文本) <TextBlock Grid.Row="0" Text="{Binding Text}"/> <TextBox Grid.Row="1" Text="{Binding Text}"/> 场景1:ViewModel未实现INotifyPrope

我对实施INotifyPropertyChanged的后果以及由于INotifyPropertyChanged而未更新的属性有疑问

假设我有一个带有文本块和文本框的窗口。两者都附着到我的ViewModel中的同一属性(文本)

<TextBlock Grid.Row="0" Text="{Binding Text}"/>
<TextBox Grid.Row="1" Text="{Binding Text}"/>

场景1:ViewModel未实现INotifyPropertyChanged:

如果我在更改文本后离开文本框的焦点,我的文本块也会更改文本

场景2:ViewModel确实实现了INotifyPropertyChanged:

我没有解雇手动更改的财产。因此,我理解在更改文本框的文本后,我的文本块不会更改文本

但是为什么场景1在没有InotifyProperty更改的情况下工作。。。为什么仅仅因为实现了INotifyPropertyChanged,相同的操作就不再起作用了?

试试以下方法:

<TextBlock Grid.Row="0" Text="{Binding Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>


你确定吗?如果你真的解雇了PropertyChanged,会发生什么?是的@Papazzi,如果我在事后解雇PropertyChanged,文本框会像预期的那样更新。谢谢你的回答。不幸的是,你的回答不能解释我的现象。对不起,我以为你想解决你的问题。在场景1中,如果文本框的代码发生变化,它将不会更新texblock。它在可视界面中工作,因为它是WPF在UI中处理绑定的默认行为的一部分。当您实现INPC时,您必须注意它。检查这个:(不能正确格式化链接,因为现在我使用的是一台键盘怪异的电脑)。祝你过得愉快!