2017-09-13 12 views
0

Je suis en train de trouver un moyen d'ajouter un comportement dans le code, je suis capable de l'ajouter avec succès en XAML.Comment ajouter WPF Behavior dans le code derrière

Voici comment j'ajoute le comportement en XAML à une grille, SelectedItems est un DP dans le comportement et il s'agit d'une liaison de données à la propriété d'affichage des éléments sélectionnés du modèle. Je suis à l'écoute de la collection de grille événement a changé et mise à jour du DP qui à son tour informe le mode d'affichage des éléments sélectionnés

/// <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> 

Ce que je dois est de créer ce comportement dans le code derrière. Je le fais dans le constructeur de la fenêtre qui contient la grille, mais cela ne fonctionne pas, la propriété itemsmodel selected items n'est pas mise à jour.

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); 

Répondre

0

Essayez ceci:

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

@vikasmittal: S'il vous plaît rappelez-vous de voter des réponses utiles :) https://stackoverflow.com/help/someone-answers – mm8