我首先要说这是一个非常简单的例子,我的问题是在一个更大的项目中,所以虽然我正在做的重组将是最好的方式它不是一个选项,我正在寻找我可以添加的东西如果可能的话,在这个例子中解决底部的问题.
Person.cs
public class Person : viewmodelBase { }
Address.cs
public class Address : viewmodelBase { public Address() : base() { Model.OnModelChanged += Model_OnModelChanged; } private void Model_OnModelChanged(object sender,EventArgs e) { } }
正如您所看到的,建筑上的地址正在与模型挂钩,这是重要的部分!
这两个对象的视图是.
Person.xaml
<Style targettype="{x:Type local:Person}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate targettype="{x:Type local:Person}"> <StackPanel Orientation="Vertical"> <TextBlock Text="Person"/> <local:Address/> </StackPanel> </ControlTemplate> </Setter.Value> </Setter> </Style>
Address.xaml
<Style targettype="{x:Type local:Address}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate targettype="{x:Type local:Address}"> <TextBlock Text="Address"/> </ControlTemplate> </Setter.Value> </Setter> </Style>
Person视图自己引入了Address viewmodel,如果我将2个Person实例添加到主窗口的列表中,该视图将创建2个新的Address实例,这是设计和很好的.
我的问题是,如果从集合中删除Person的一个实例,则会留下2个人和地址实例,一个由事件挂钩保存在内存中的实例.
如果视图模型已经通过视图引入可视树并挂钩事件,您如何摆脱它们?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。