2017-09-13 4 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> 

의보기 모드를 통지 민주당을 업데이트하고 있습니다. 그리드가 포함 된 창의 생성자에서이 작업을 수행하고 있지만 작동하지 않습니다. 선택한 항목의 viewmodel 속성이 업데이트되지 않습니다.

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