1

我创建了一个具有依赖属性的用户控件。我可以很好地设置调用页面中的属性,并且在用户控件中一切正常。但是,当依赖项属性值发生更改时,不会通知承载用户控件的页面。

用户控件中的依赖属性为:

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}"/>

希望的行为是依赖属性注册更改,并通过绑定通知托管页面。然而,事实并非如此。

谢谢!

4

1 回答 1

0

ADependencyProperty更像是指向另一个属性的指针

你可以让它指向你的外部BoxAccountResult属性,或者你可以让它指向(SearchResult)args.NewValue,但你不能两者都做。

我认为您要做的是更新方法SelectedSearchResult中的源属性,OnSelectedSearchResultChanged而不是将属性设置为新值。

于 2012-10-16T17:05:56.127 回答