2011-10-26 200 views
0
设置自定义属性

比方说,我有2周的ViewModels和1查看问题与WPF

  • ViewModel_A
  • ViewModel_B

  • View_A

在ViewModel_A我得到了一个costum property class PersonClass PersonClass有一些字段

  • 名称
  • 年龄
  • 性别

在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; 

...

像我这样做,现在我得到ViewModel_A的2种不同的情况,所以我的财产PersonClass不会注意到任何变化...
最新最好的解决方案来解决这个问题?

回答

1

您的PersonClass必须实现INotifyPropertyChanged并且您的View必须将视图模型实例设置为DataContext。 处理嵌套ViewModels的一个好方法是使用ContentControl s 这当然不是必须的,但是增加了一种很好的自定义方式,只是切换子视图模型允许更改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具有与DataContextViewModel_B一个实例。