从调用页面绑定到UserControl属性

时间:2012-10-16 16:40:13

标签: .net wpf user-controls dependency-properties

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

用户控件中的依赖项属性是:

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

希望的行为是依赖属性注册更改,并通过绑定通知宿主页面。但是,它不是。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

您可以将其指向外部BoxAccountResult媒体资源,也可以将其指向(SearchResult)args.NewValue,但不能同时执行这两项操作。

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