У меня есть древовидная структура с флажками для каждого элемента, использующего DataTemplate и 2 HierarchicalDataTemplates (Мой список в связке состоит из 2 или 3 уровней, и флажки появляются только на уровне листа - последний).
Лист выглядит так:
<TreeView ItemsSource="{Binding}">
<DataTemplate DataType="{x:Type local:MatchDataLeaf}">
<Grid Margin="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="240"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="60"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Horizontal">
<CheckBox x:Name="selectCheckBtn" Grid.Column="0" IsChecked="True" Click="select_Click"
Tag="{Binding}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}"/>
<TextBlock Grid.Column="1" Margin="5,0,0,0" Text="{Binding Path=Name}" FontFamily="Arial" FontSize="12" FontWeight="Bold" Foreground="Black" VerticalAlignment="Center"/>
</StackPanel>
</Grid>
</DataTemplate>
Моя проблема возникает, когда я нажимаю на элемент TextBlock одного из элементов листа - если я нажимаю флажок, все в порядке.Когда я нажимаю на элемент, все дерево перемещается влево, скрывая кнопку + развернуть, и у меня нет способа вернуть его обратно.Это как бы выравнивает флажок слева от контейнера, таким образом скрывая все, что находится выше и слева от него.
Я понимаю, что это странная проблема с пользовательским интерфейсом, и я сомневаюсь, что кто-то видел это раньше.Итак, позвольте мне спросить: есть ли способ как-то отменить этот клик?Могу ли я сказать WPF ничего не делать, если я нажму эту часть элемента?Я попытался установить для параметра Handled значение true в обработчике MouseLeftButtonUp текстового блока, но это не помогло мне.
Любые другие предложения приветствуются - я понятия не имею, как к этому подойти.