微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当需要该WPF类的多个实例时,可以在模型内INotifyPropertyChanged

如何解决当需要该WPF类的多个实例时,可以在模型内INotifyPropertyChanged

我有一个 ListView ,并且 ListView ItemTemplate 包含一个文本框 ListView ItemSource 是类型T的 ObservableCollection ,其中viewmodel的实例为as Property。视图需要将自身绑定到T的特定属性(多个属性中存在T)

        <ListView ItemSource={Binding SomeObservableCollectionOfTypeT}>
           <ListView.ItemTemplate>
              <DataTemplate>
                   <TextBox Text = {Binding T.someproperty,UpdateSourceTrigger=PropertyChanged} />
              </DataTemplate>
           </ListView.ItemTemplate>
        </ListView>

起初,我将T作为viewmodel内部的一个内部类(T还实现了InotifyPropertyChanged),但是我意识到我需要以相同的方式在多个viewmodel中使用该类。 T将是这里的模型。

我倾向于避免在模型中使用 INotifyPropertyChanged ,因为我认为最好将View专门绑定到viewmodel。 这是在模型中使用 INotifyPropertyChanged 有效的确切方案吗? 在这种典型情况下,我该如何处理这种情况?在这种情况下,您需要使用MVVM设计模式绑定到viewmodel集合内的Types属性

解决方法

我倾向于避免在Model中使用INotifyPropertyChanged,因为我认为最好将View专门绑定到Viewmodel。

这取决于您如何定义“模型”。如果它是跨多个应用程序使用的某种域对象,则不应直接对其进行绑定,而应创建确实实现INotifyPropertyChanged的包装器视图模型类。

这是在模型中使用INotifyPropertyChanged有效的确切方案吗?

当然只要“模型”不是域对象。然后,您应该在客户端应用程序中将其替换为视图模型。

在这种典型情况下,我该如何处理这种情况?在这种情况下,您需要使用MVVM设计模式绑定到ViewModel的集合内的Type的属性?

创建一个实现INotifyPropertyChanged的“子” view 模型类,例如通过简单地wrapping属性将当前模型对象转换为该类型。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。