7

プロパティ グリッド内のエディターとして使用されるユーザー コントロールで使用される次の Xaml があります。問題は、コード ビハインドから動作をアタッチすると、C# はどのように見えるかということです。

<i:Interaction.Behaviors>
    <igExt:XamComboEditorSelectedItemsBehavior SelectedItems="{Binding SelectedItems, ElementName=_uc}"/>
</i:Interaction.Behaviors>

これは PropertyGrid に動的に読み込まれるエディター上にあるため、コード ビハインドからバインディングを使用してエディターのインスタンスを作成するだけで済み、非常に短く、1 つのエディターだけを含むさまざまな xaml ファイルを用意する必要はありませんでした。

それとも、コードビハインドでエディターを作成している間に、ビヘイビアーにあるすべてのコードを単純に再実装して呼び出す方が簡単でしょうか?

4

2 に答える 2

21
XamComboEditorSelectedItemsBehavior behavior = new XamComboEditorSelectedItemsBehavior();
behavior.SetBinding(XamComboEditorSelectedItemsBehavior.SelectedItemsProperty, new Binding() 
    { 
        ElementName = "_uc", 
        Path = new PropertyPath("SelectedItems"), 
        Mode = BindingMode.TwoWay 
    });
Interaction.GetBehaviors(yourElementName).Add(behavior)
于 2012-05-03T07:22:18.887 に答える
1

OnAttachedイベントが発生しないため、受け入れられた回答はデザイナーでは機能しないようです。実行時およびデザイナーでも機能するアプローチはAttach()、動作でメソッドを使用することです。この場合、次のようになります。

XamComboEditorSelectedItemsBehavior behavior = new XamComboEditorSelectedItemsBehavior();
behavior.SetBinding(XamComboEditorSelectedItemsBehavior.SelectedItemsProperty, new Binding() 
    { 
        ElementName = "_uc", 
        Path = new PropertyPath("SelectedItems"), 
        Mode = BindingMode.TwoWay 
    });
multiSelectBehavior.Attach(yourElementName)
于 2020-12-03T15:17:19.397 に答える