У меня возникают проблемы с привязкой данных внутри UserControl при использовании ItemsControl, у которого есть ItemsSource.Мой Eventtrigger никогда не вызывается.
Думаю, проблема в том, что когда я вызываю свой eventtrigger в строке:
<cmd:EventToCommand Command="{Binding ElementName=layoutroot, Path=DataContext.Checked}" />
, он пытается найти проверенное событие в коллекции CheckBoxes, потому что я установилмой ItemsSource, в то время как он должен искать в своем родителе.Я искал решение в течение нескольких дней, но ни один из них, похоже, не работает.
Мой код выглядит следующим образом:
<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>
Когда я пытаюсь следующий код, он работает точно так же, какожидается:
<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>
Но мне действительно нужно это поведение внутри itemsControl с установленным ItemsSource.
Есть идеи?