/ / Liaisons multiples MVVM sur un contrôle utilisateur - wpf, xaml, binding, mvvm

Liaisons multiples MVVM sur un contrôle utilisateur - wpf, xaml, binding, mvvm

J'ai un UserControl "SubjectListView". La liaison est définie sur "AllSubjects", qui est une ObservableCollection à l'intérieur de SubjectListViewModel. Il est utilisé pour récupérer le nom et exécuter la commande. Le nom est extrait, mais la commande qui figure également dans SubjectListViewModel n'est pas exécutée sur le bouton mais fonctionne sur le bouton qui n'est pas créé de manière dynamique en dehors de la portée.

Y a-t-il une solution?

<StackPanel>
<ItemsControl ItemsSource="{Binding AllSubjects}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Width="100" Content="{Binding Name}" <!-- Is working-->
Command="{Binding InvasionCommand}" <!--Is NOT working--> />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Button Content="Check for Invasion" Width="120" Command="{Binding InvasionCommand}" <!-- Is working-->/>
</StackPanel>

Réponses:

2 pour la réponse № 1

Le problème est que InvasionCommand est dans votre viewmodel (je pense que oui), mais vous êtes dans l’élément réel de votre ItemsSource ..

Pour cela, j'utilise ElementSpy, mais je pense que cela fonctionnera si vous utilisez un RelativeSource ..

Ici vous avez un aperçu de toutes les liaisons possibles: http://www.nbdtech.com/Free/WpfBinding.pdf

Ou, si vous donnez le nom à votre StackPanel Container, vous pouvez lier les éléments suivants:

Binding ElementName=Container, Path=DataContext