传递DependencyProperty哪个更新到ViewModel是一个好习惯?

时间:2010-08-05 09:56:27

标签: silverlight mvvm

我有一个自定义用户控件,它有一个依赖项属性。那个自定义用户控件有点复杂,所以我决定为它制作一个视图模型,但我还没有实现它。我正在考虑使视图模型具有一些绑定到自定义用户控件的属性。

这是我的代码示例

UserControl.xaml

<StackPanel>
 <TextBlock Text={Binding Age} />
 <TextBlock Text={Binding Name} />
</StackPanel>

UserControl.cs

public Person Person
{
    get { return (Person)GetValue(PersonProperty); }
    set { SetValue(PersonProperty, value); }
}
public static readonly DependencyProperty PersonProperty = DependencyProperty.Register("Person", typeof(Person), typeof(SampleUserControl), new PropertyMetadata(null, propertyChangedCallback));

private static void propertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
 // I want to update the view model here
 // Something like the following
 (this.DataContext as MyViewModel).Person = Person; 
}

MyViewModel

public Person Person
{
  get { return _person; }
  set
  {
    _pserson = person;
    RaisePorpertyChanged("Age");
    RaisePorpertyChanged("Name");
  }
}

public int Age{ get; set; }
public string Name{ get; set; }

那么,你认为这是一个好习惯吗?我的意思是在依赖属性更新时更新视图模型,希望有人教我如何在PropertyChangedCallback中更新视图模型:) BTW我正在使用MVVM Light工具包。

1 个答案:

答案 0 :(得分:0)

根据这个问题http://forums.silverlight.net/forums/p/133665/298671.aspx,我不能使用视图模型作为用户控件的DataContext来以通常的方式绑定某些UI。