C# 如何在不使用INotifyPropertyChanged的情况下更新视图和视图模型
当视图和视图模型之间存在双向绑定时,我们将实现INotifyPropertyChanged接口,该接口具有以下事件:C# 如何在不使用INotifyPropertyChanged的情况下更新视图和视图模型,c#,wpf,mvvm,C#,Wpf,Mvvm,当视图和视图模型之间存在双向绑定时,我们将实现INotifyPropertyChanged接口,该接口具有以下事件: // Summary: // Occurs when a property value changes. event PropertyChangedEventHandler PropertyChanged; 但是我可以在不实现INotifyPropertyChanged的情况下执行同样的操作吗?如果要避免显式实现INotifyPropertyChanged,可以使用类似
// Summary:
// Occurs when a property value changes.
event PropertyChangedEventHandler PropertyChanged;
但是我可以在不实现INotifyPropertyChanged的情况下执行同样的操作吗?如果要避免显式实现
INotifyPropertyChanged
,可以使用类似PostSharp的代码编织工具。然后,实现INotifyPropertyChanged
变得非常简单
[NotifyPropertyChanged]
public class Shape
{
public double X { get; set; }
public double Y { get; set; }
}
您可以在此处找到更多详细信息:。如果您不想显式实现
INotifyPropertyChanged
,可以使用类似PostSharp的代码编织工具。然后,实现INotifyPropertyChanged
变得非常简单
[NotifyPropertyChanged]
public class Shape
{
public double X { get; set; }
public double Y { get; set; }
}
您可以在这里找到更多详细信息:。我会说不。您必须以任何方式实现INotifyPropertyChanged,否则与twoway的绑定将无法工作 我会说不。您必须以任何方式实现INotifyPropertyChanged,否则与twoway的绑定将不起作用 当然可以。当viewmodel发生更改时,您只需松开更新视图的简单方法。现在有办法克服这一点
DataContext
,这样所有绑定都会得到评估
再说一次,但这是非常昂贵的李>
但显然,这些都是非常奇怪的解决办法。同样值得一提的是,绑定到未实现INotifyPropertyChanged的对象通常速度较慢。当然可以。当viewmodel发生更改时,您只需松开更新视图的简单方法。现在有办法克服这一点
DataContext
,这样所有绑定都会得到评估
再说一次,但这是非常昂贵的李>
但显然,这些都是非常奇怪的解决办法。还值得一提的是,绑定到未实现INotifyPropertyChanged的对象通常较慢。如果无法实现
INotifyPropertyChanged
(INPC)(或者没有要绑定到的源代码)然后,您应该在视图模型中包装您想要绑定到的任何对象,视图模型将为绑定实现INPC,并且必须获取/设置数据到另一个类。如果您不能实现INotifyPropertyChanged
(INPC)(或者没有要绑定到的源代码)然后,您应该在视图模型中包装要绑定到的任何对象,视图模型将为绑定实现INPC,并且必须获取/设置数据到另一个类。可以用几种不同的方式解释“执行相同的操作”。如果您问“我可以添加一个名为PropertyChanged的事件处理程序吗”,那么是的,您可以!有没有什么具体的原因让你不能使用或不喜欢使用INotifyPropertyChanged?@Clemens我也有这个问题。考虑一个第三方库,您希望直接在WPF中显示对象。当然,通常您会将这些对象视为模型,并创建viewmodel。但当您使用类似PropertyGrid的东西时,这是相当困难的。我在物理引擎和属性网格上遇到了这个问题。“做同样的事情”可以用几种不同的方式来解释。如果您问“我可以添加一个名为PropertyChanged的事件处理程序吗”,那么是的,您可以!有没有什么具体的原因让你不能使用或不喜欢使用INotifyPropertyChanged?@Clemens我也有这个问题。考虑一个第三方库,您希望直接在WPF中显示对象。当然,通常您会将这些对象视为模型,并创建viewmodel。但当您使用类似PropertyGrid的东西时,这是相当困难的。我有一个物理引擎和属性网格的问题。