У меня есть ComboBox
, который включает в себя CheckBox
путем изменения DataTemplate
, это хорошо работает, когда сделано самостоятельно, но при его перемещении в DataGrid
CheckBox
не кликабельны.WPF CheckBox в ComboBox DataTemplate не работает в DataGrid
Рабочий код:
<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>
Доказательство:
Но при добавлении этого же логику к DataGrid
, вместо добавления галочки в CheckBox
, то ComboBox
закрывает ничего выбрано ,
Non рабочий код:
<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>
Вы получаете через них какое-либо событие? Можете попробовать добавить 'ClickMode =" Нажмите «' в CB –
@ChrisW. Пожалуйста, измените это, чтобы ответить, и я могу отметить его правильно, это позволяет отмечать «CheckBoxes» в «DataGrid», теперь единственная проблема при каждом нажатии 'ComboBox' закрывается. –
Alrighty, PS для второй части. Я всегда делал что-то вроде [этого] (http://stackoverflow.com/questions/3667203/expand-the-combobox-and-its-items-when-it-gets-focus). :) –