我创建了一个具有依赖项属性的用户控件。我可以在调用页面中设置属性,并且一切都在用户控件中正常工作。但是,当更改依赖项属性值时,不会通知承载用户控件的页面。
用户控件中的依赖项属性是:
public static readonly DependencyProperty SelectedSearchResultProperty = DependencyProperty.Register("SelectedSearchResult", typeof(SearchResult), typeof(QPowerFinder), new PropertyMetadata(null, OnSelectedSearchResultChanged));
public SearchResult SelectedSearchResult
{
get { return (SearchResult)this.GetValue(SelectedSearchResultProperty); }
set
{
this.SetValue(SelectedSearchResultProperty, value);
RaisePropertyChanged("SelectedSearchResult");
}
}
private static void OnSelectedSearchResultChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
(obj as QPowerFinder).SelectedSearchResult = (SearchResult)args.NewValue;
}
托管用户控件的页面设置为:
<localcont:QPowerFinder Grid.Column="1" SelectedSearchResult="{Binding BoxAccountResult, Mode=TwoWay}"/>
希望的行为是依赖属性注册更改,并通过绑定通知宿主页面。但是,它不是。
谢谢!
答案 0 :(得分:0)
DependencyProperty
更像是指向另一个属性的指针
您可以将其指向外部BoxAccountResult
媒体资源,也可以将其指向(SearchResult)args.NewValue
,但不能同时执行这两项操作。
我认为您要做的是更新SelectedSearchResult
方法中的源OnSelectedSearchResultChanged
属性,而不是将属性设置为新值。