在WPF中设置自定义属性的问题
本文关键字:问题 自定义属性 设置 WPF | 更新日期: 2023-09-27 18:12:30
假设我有2个ViewModels和1个View
- ViewModel_A
ViewModel_B
View_A
在ViewModel_A我有一个服装属性类PersonClassPersonClass有一些字段
- <
- 名称/gh>年龄
- 性别
在View_A中,我将一些文本框绑定到PersonClass属性,该属性与datacontext ViewModel_A绑定了两种方式
在ViewModel_B中,我想从代码中更新PersonClass属性。
什么是最好的方法来做到这一点,因为我正在工作的时候,我在ViewModel_B的ViewModel_A的一个新实例,然后设置属性PersonClass。
ViewModel_A viewModel_A = new ViewModel_A();
viewModel_A.PersonClass.Name = someString;
viewModel_A.PersonClass.Age = someString;
…
就像我现在做的那样,我有2个不同的ViewModel_A实例,所以我的属性PersonClass永远不会注意到任何变化…
解决这个问题的最好办法是什么?
你的PersonClass必须实现INotifyPropertyChanged和你的视图必须得到一个视图模型实例设置为DataContext。处理嵌套viewmodel的一个好方法是使用ContentControls这当然不是必需的,但增加了一种很好的自定义方式,只需切换子视图模型就可以更改UI的部分。
class ViewModel_B
{
public ViewModel_A MySubViewModel{get;set;}
}
<DataTemplate x:Key="vmaTemplate" DataType="{x:Type ViewModel_A}">
<TextBlock Text="{Binding PersonClass.Name}"/>
</DataTemplate>
<Grid>
<ContentControl Content="{Binding MySubViewModel}"
ContentTemplate="{StaticTemplate vmaTemplate}"/>
</Grid>
本例假设Grid
有ViewModel_B
的一个实例作为DataContext
。