2

XAMLの「プロパティセッター」内でプロパティにバインドしようとしています。この場所でのバインドは、「通常の」場所でのバインドと同じ階層では発生しないようです。誰かがそこに何かをバインドする方法を知っていますか?

また、RelativeSourceを使用して親を取得しようとしましたが(これは、複製ではなく、実際に実行したいことなので、より良いです)、サイコロはありません。

<loc:MyType Target="{Binding ElementName=Editor, Path=TextArea, Converter={loc:EditorAdapterConverter}}">
    <loc:MyType.PopupActions>
        <loc:BackspaceHideAction Target="{Binding ElementName=Editor, Path=TextArea, Converter={loc:EditorAdapterConverter}}" /> //Binding doesn't work
        <loc:KeyAction Action="Show" Key="Space" Modifiers="LeftCtrl" />
        <loc:KeyAction Action="Hide" Key="Escape" />
    </loc:MyType.PopupActions>
</loc:MyType>

関連情報: Targetと呼ばれる依存関係プロパティBackspaceHideActionを継承しFrameworkElement、持っています(実際にはと同じMyTypeです)。Targetこれにもアクセスする必要がありますBackspaceHideAction。実際には、DPプロパティである必要はありません。

MyType.PopupActionsとして宣言されたMyTypeの依存関係プロパティPopupActionList : List<PopupAction>です。

現在、バインドできない理由は、プロパティのインスタンス化内にネストされているためだと思います。同様のバインディングが他の場所(上記の行だけ)で機能しているため、バインディングのタイプが問題になることはありません。ただの文脈。

4

1 に答える 1

2

もう少しテストを行って、なぜそれが機能しなかったのかを発見しました。

の依存関係プロパティは、 -何も派手ではないと宣言されましたPopupActions。ただし、プロパティはWPF要素の「DOM」のような構造に自動的に入力されません。これはそれほど驚くことではありません(いつものように、理解した後)。MyTypePopupActionList

ただし、MyType.AddLogicalChild個々のPopupActionをアイテムとして呼び出すためのコードが追加されているため、すべてが正常に機能します。(これまでのところ)

于 2012-05-18T10:55:20.190 に答える