【问题标题】:INotifyPropertyChanged for properties that are located in DLL fileINotifyPropertyChanged 用于位于 DLL 文件中的属性
【发布时间】:2021-06-25 00:38:27
【问题描述】:

例如,您准备了一个包含一些类的 dll 文件。然后你想在你的项目中使用这些类。那么如何为位于 dll 文件中的属性实现INotifyProperty。我正在使用 MVVM,所以这些类就像模型。

如果我更改了某个值,我想更新我的 UI,但我不能这样做,因为我无法为位于我的 dll 文件中的类实现 INotifyProperty。如果你问我为什么不能在我自己的dll文件中实现这个接口,我会告诉你这是因为INotifyProperty是我们在WPF项目中使用的特定接口,如果我不想使用WPF怎么办。这就是为什么我准备了一个 dll 文件,我在其中编写了某种业务逻辑类。

【问题讨论】:

  • 在这些类上写一个 WPF 通知包装器?可以使用部分类或将基本的非 INPC 类继承到 WPF 支持类中。
  • INotifyPropertyChanged 不仅仅在 WPF 中使用,不知道你为什么这么认为。例如,在 WinForms 中,它一直用于将类对象绑定到 BindingSource,否则,不会收到 PropertyChanged 通知,并且不会更新绑定的 UI 元素。
  • 是的,我们也可以在 winforms 中使用它。但在 ASP.NET 中,我认为我不能使用 INotifyPropertyChanged,因为我们的视图是使用 html 和 css 创建的

标签: c# wpf dll inotifypropertychanged


【解决方案1】:

真的,我认为您应该只在 dll 的原始类中实现INotifyPropertyChanged。实现 INotifyPropertyChanged 不会阻止您使用非 WPF UI。如果其他框架需要其他东西,您总是可以实现其他接口。另外,仅仅因为 WPF 使用INotifyPropertyChanged 并不意味着它适用于 WPF;其他框架也可能会使用它。我看不出您有任何理由要避免实现所需的接口。

也就是说,如果您出于某种原因真的不想这样做,那么我唯一能想到的另一件事就是创建一个包装类。这将需要大量重复的代码(例如属性声明)。另外,如果您有一些自动更新其他属性的属性,或者需要原始类型参数的方法,这甚至可能不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 2021-03-22
    • 2011-11-21
    • 1970-01-01
    相关资源
    最近更新 更多