Je rencontre des problèmes avec la liaison de données à l'intérieur d'un UserControl lors de l'utilisation d'un ItemsControl qui a une ItemsSource. Mon Eventtrigger n'est jamais appelé.Liaison de données imbriquée MVVM
Je pense que le problème est que quand je l'appelle mon EventTrigger dans la ligne:
<cmd:EventToCommand Command="{Binding ElementName=layoutroot, Path=DataContext.Checked}" />
il essaie de trouver l'événement contrôlé dans la collecte CheckBoxes parce que j'ai mis mon ItemsSource, alors qu'il devrait chercher dans sa parent . J'ai cherché une solution pendant des jours, mais aucun d'entre eux ne semble fonctionner.
Mon code ressemble à ceci:
<Grid x:Name="layoutroot">
<ItemsControl x:Name="itemcontrol" ItemsSource="{Binding CheckBoxes}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<s:SurfaceCheckBox Background="White" Foreground="White">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<cmd:EventToCommand Command="{Binding ElementName=layoutroot, Path=DataContext.Checked}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</s:SurfaceCheckBox>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
Lorsque je tente le code suivant cela fonctionne exactement comme prévu:
<Grid x:Name="layoutroot">
<s:SurfaceCheckBox Background="White" Foreground="White" Content="{Binding Content}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<cmd:EventToCommand Command="{Binding ElementName=layoutroot, Path=DataContext.Checked}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</s:SurfaceCheckBox>
</Grid>
Mais je vraiment besoin de ce comportement à l'intérieur d'un ItemsControl avec un ensemble ItemsSource.
Des idées?
Merci pour la réponse. J'ai compris qu'il y avait une autre couche sur mes cases à cocher, c'est pourquoi mes événements n'ont pas été déclenchés. – Marc