2017-09-13 1 views
0

コード内にビヘイビアを追加する方法を見つけようとしていますが、これをXAMLで正常に追加できました。コード内にWPFビヘイビアーを追加する方法

これは、XAMLの動作をグリッドに追加する方法です。SelectedItemsはビヘイビアのDPであり、データはビューモデル選択アイテムプロパティにバインドされます。私は、グリッドコレクション変更イベントに耳を傾け、ターンで選択した項目

私は背後にあるコードでこの動作を作成することです必要なもの
/// <summary> 
/// Dependency Property SelectedItems 
/// </summary> 
public static readonly DependencyProperty SelectedItemsProperty = 
     DependencyProperty.Register("SelectedItems", 
     typeof(INotifyCollectionChanged), typeof(MultiSelectBehavior), 
     new PropertyMetadata(null)); 

AssociatedObject.SelectedItems.CollectionChanged += GridSelectedItems_CollectionChanged; 
<i:Interaction.Behaviors>     
    <behaviors:MultiSelectBehavior SelectedItems="{Binding SelectedItems}"/> 
</i:Interaction.Behaviors> 

の表示モードを通知DPを更新しています。私は、グリッドを含むウィンドウのコンストラクタでこれをやっていますが、それは動作していません、ビューモデルの選択項目のプロパティが更新されていません。

var multiSelectBehavior = new MultiSelectBehaviorSingleton(); 
BindingOperations.SetBinding(this.BackupsGrid, MultiSelectBehavior.SelectedItemsProperty, 
    new Binding() 
    { 
     Source = this.DataContext, 
     Path = new PropertyPath("SelectedItems"), 
     Mode = BindingMode.OneWay 
    }); 
Interaction.GetBehaviors(this.BackupsGrid).Add(multiSelectBehavior); 

答えて

0

これを試してみてください:

var multiSelectBehavior = new MultiSelectBehavior(); 
BindingOperations.SetBinding(multiSelectBehavior, MultiSelectBehavior.SelectedItemsProperty, new Binding("SelectedItems")); 
Interaction.GetBehaviors(this.BackupsGrid).Add(multiSelectBehavior); 
+0

@vikasmittal:役に立つ答えを投票することを忘れないでください:) https://stackoverflow.com/help/someone-answers – mm8

関連する問題