/ / WPF CheckBox w ComboBox DataTemplate nie działa w DataGrid - wpf, xaml, datagrid, datatemplate

WPF CheckBox w ComboBox DataTemplate nie działa w DataGrid - wpf, xaml, datagrid, datatemplate

mam ComboBox który obejmuje CheckBox zmieniając DataTemplate, działa to dobrze, gdy jest wykonywane samodzielnie, ale po przeniesieniu do pliku DataGrid temu CheckBox nie można kliknąć.

Kod roboczy:

<ComboBox ItemsSource="{Binding WrapUpHelper.WrapUps}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsSelected}"
Width="20" />
<TextBlock Text="{Binding FriendlyDescription}" />
</StackPanel>
<ListBox ItemsSource="{Binding WrapUps}"
Visibility="{Binding Path=IsSelected, Converter={StaticResource BooleanToVisibilityConverter}}"
BorderThickness="0"
Background="Transparent">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsSelected}"
Width="20" />
<TextBlock Text="{Binding FriendlyDescription}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

Dowód:

wprowadź opis obrazu tutaj

Ale podczas dodawania tej samej logiki do DataGrid, zamiast dodawać znacznik wyboru do CheckBox, ComboBox zamyka się bez zaznaczenia.

Niedziałający kod:

<DataGridTemplateColumn Header="Wrap up" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding WrapUpHelper.WrapUps}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsSelected}"
Width="20" />
<TextBlock Text="{Binding FriendlyDescription}" />
</StackPanel>
<ListBox ItemsSource="{Binding WrapUps}"
Visibility="{Binding Path=IsSelected, Converter={StaticResource BooleanToVisibilityConverter}}"
BorderThickness="0"
Background="Transparent">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsSelected}" Width="20" />
<TextBlock Text="{Binding FriendlyDescription}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

wprowadź opis obrazu tutaj

Odpowiedzi:

1 dla odpowiedzi № 1

Jeśli masz zagnieżdżoną kontrolkę, której rodzic normalnie przejmuje kontrolę nad HitTestVisibility, możesz wykreślić i pozwolić zagnieżdżonej kontrolce reagować na jej normalne zdarzenia zamiast nadrzędnej za pomocą ClickMode wyliczenie za pośrednictwem właściwości ClickMode="Pressed" dodawane do danej kontroli.

Mam nadzieję, że to pomaga, okrzyki!