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 に答える