Unity解析时,依赖属性元抛出错误

时间:2013-12-05 09:57:14

标签: c# dependency-injection unity-container prism dependency-properties

我有一个presentationmodel(viewmodel),其中包含一个注册如下的依赖属性。

public Field SelectedField
{
    get { return (Field)GetValue(SelectedFieldProperty); }
    set
    {
        SetValue(SelectedFieldProperty, value);
    }
}

public static readonly DependencyProperty SelectedFieldProperty =
    DependencyProperty.Register("SelectedField", typeof(Field), typeof(PresentationModel), new PropertyMetadata(new  PropertyChangedEventHandler(onPropertyChangedSelectedField)));

private static void onPropertyChangedSelectedField(object sender, PropertyChangedEventArgs e)
{
    throw new NotImplementedException();
}

我正在从下面的控制器解析视图..

 IPresentationModel presenter = this.Container.Resolve<IPresentationModel>();

在尝试时,我收到错误提示 - 在发生异常时:调用构造函数PresentationModel,在挖掘时,我注意到错误发生在下面的行中..

public static readonly DependencyProperty SelectedFieldProperty =
    DependencyProperty.Register("SelectedField", typeof(Field), typeof(PresentationModel), new PropertyMetadata(new  PropertyChangedEventHandler(onPropertyChangedSelectedField)));

我在propertymeta数据中提到错误是由PropertyChangedEventHandler和DependencyPropertyChangedEventHandler引起的。但是,对于PropertyChangedCallBack,我没有遇到任何错误,并且视图加载正常。这会是什么问题..

1 个答案:

答案 0 :(得分:1)

通过查看MSDN文档,似乎PropertyChangedCallbackPropertyChangedEventHandler用于不同的事情。

根据文档, PropertyChangedCallback 是我认为您正在寻找的:

  

“表示当依赖项属性的有效属性值发生更改时调用的回调。”

至于 PropertyChangedEventHandler ,文档说:

  

“表示在组件上更改属性时将处理 PropertyChanged 事件引发(来自INotifyPropertyChanged接口)的方法。”

这似乎提示该委托用于通知公共属性的更改,例如视图在其视图模型中绑定到属性时。因此,这两个委托似乎不是“可交换的”(它们甚至在不同的名称空间中定义。)