.net 从调用页绑定到UserControl属性
我创建了一个具有dependency属性的用户控件。我可以在调用页面中很好地设置属性,并且在用户控件中一切都正常工作。但是,更改依赖项属性值时,不会通知承载用户控件的页面 用户控件中的依赖项属性为:.net 从调用页绑定到UserControl属性,.net,wpf,user-controls,dependency-properties,.net,Wpf,User Controls,Dependency Properties,我创建了一个具有dependency属性的用户控件。我可以在调用页面中很好地设置属性,并且在用户控件中一切都正常工作。但是,更改依赖项属性值时,不会通知承载用户控件的页面 用户控件中的依赖项属性为: public static readonly DependencyProperty SelectedSearchResultProperty = DependencyProperty.Register("SelectedSearchResult", typeof(SearchResult), typ
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}"/>
期望的行为是依赖属性注册更改,并通过绑定通知宿主页面。然而,事实并非如此
谢谢 A
dependencProperty
更像是指向另一个属性的指针
您可以让它指向外部的BoxAccountResult
属性,也可以让它指向(SearchResult)args.NewValue
,但不能同时执行这两项操作
我认为您要做的是更新
OnSelectedSearchResultChanged
方法中的sourceSelectedSearchResult
属性,而不是将该属性设置为新值。DependencyProperty更像是指向另一个属性的指针,您可以让它指向您的外部框AccountResult属性,或者您可以让它指向(SearchResult)args.NewValue,但不能同时指向两者。我认为您要做的是更新OnSelectedSearchResultChanged方法中的source SelectedSearchResult属性,而不是将该属性设置为新值,这听起来似乎是对的,但我不确定该怎么做?@billp OnSelectedSearchResultChanged的目的是什么,谁来调用它?你甚至可能根本不需要它。但是如果我没记错的话,有一种方法可以获取绑定表达式并使用UpdateSource
或UpdateTarget
更新源属性,但是我现在记不起语法。