简体   繁体   English

我在 TreeviewItem 中有一个按钮。 当我点击按钮 TreeviewItem 不会被选中

[英]I have a button in TreeviewItem. When i Click on Button TreeviewItem will not be get selected

I have a button in TreeviewItem.我在 TreeviewItem 中有一个按钮。 When i Click on Button TreeviewItem will not be get selected.(styles will not changed)当我点击按钮 TreeviewItem 不会被选中。(样式不会改变)

 <TreeView Grid.Row="1" Grid.Column="1" Style="{StaticResource TreeViewStyle}">
        <TreeViewItem x:Name="Root" Header="Item 1111111111" >
            <TreeViewItem  Header="Item 1.1">
                <TreeViewItem Header="Item 1.1">
                    <Border HorizontalAlignment="Stretch" BorderThickness="1" BorderBrush="Red">
                    <ToggleButton   Content="Button">
                        <ToggleButton.Style>
                    <Style  TargetType="ToggleButton">
                        <Setter Property="Focusable" Value="False"/>
                        <Setter Property="Cursor" Value="{x:Static Cursors.Hand}" />
                        <Setter Property="HorizontalAlignment" Value="Stretch"/>
                        <Setter Property="HorizontalContentAlignment" Value="Left"/>

                        <Setter Property="Template">
                            <Setter.Value>
                                        <ControlTemplate TargetType="ToggleButton">
                                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                          Margin="{TemplateBinding Padding}"
                          RecognizesAccessKey="True" 
                          SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                                            <ControlTemplate.Triggers>
                                                <Trigger Property="IsChecked" Value="True">
                                                        <!--<Setter Ta TargetName="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}, Path=x:Name}" Property="Foreground" Value="Red"/>-->
                                                        <Setter Property="Foreground" Value="{StaticResource ThemeColorBrush}"/>
                                                </Trigger>
                                            </ControlTemplate.Triggers>
                                        </ControlTemplate>
                                    </Setter.Value>
                        </Setter>
                    </Style>
                        </ToggleButton.Style>
                    </ToggleButton>
                    </Border>
                </TreeViewItem>
            </TreeViewItem>
        </TreeViewItem>
        <TreeViewItem Header="Item 2"/>
    </TreeView>

My expected Output is when user click on TreeviewItem(having Button) it should make of treeviewItem as我预期的输出是当用户单击 TreeviewItem(具有 Button)时,它应该将 treeviewItem 作为

Isselected=True被选中=真

How can I achive this我怎样才能做到这一点

A possible way is to add a style trigger to the TreeViewItem and, whenever the IsKeyboardFocusWithin=True, you set the IsSelected to true.一种可能的方法是向 TreeViewItem 添加样式触发器,并且每当 IsKeyboardFocusWithin=True 时,将 IsSelected 设置为 true。 To achieve this you also need to make your ToggleButton focusable.为了实现这一点,您还需要使您的 ToggleButton 可聚焦。 Like this:像这样:

<TreeView Grid.Row="1" Grid.Column="1" Style="{StaticResource TreeViewStyle}">
    <TreeView.Resources>
            <Style TargetType="TreeViewItem">
                <Style.Triggers>
                    <Trigger Property="IsKeyboardFocusWithin" Value="True">
                        <Setter Property="IsSelected" Value="True" />
                    </Trigger>
                </Style.Triggers>
            </Style>
    </TreeView.Resources>
    <TreeViewItem x:Name="Root" Header="Item 1111111111" >
        <TreeViewItem  Header="Item 1.1">
            <TreeViewItem Header="Item 1.1">
                <Border HorizontalAlignment="Stretch" BorderThickness="1" BorderBrush="Red">
                <ToggleButton   Content="Button">
                    <ToggleButton.Style>
                <Style  TargetType="ToggleButton">
                    <Setter Property="Focusable" Value="True"/>
                    <Setter Property="Cursor" Value="{x:Static Cursors.Hand}" />
                    <Setter Property="HorizontalAlignment" Value="Stretch"/>
                    <Setter Property="HorizontalContentAlignment" Value="Left"/>

                    <Setter Property="Template">
                        <Setter.Value>
                                    <ControlTemplate TargetType="ToggleButton">
                                        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                      Margin="{TemplateBinding Padding}"
                      RecognizesAccessKey="True" 
                      SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                                        <ControlTemplate.Triggers>
                                            <Trigger Property="IsChecked" Value="True">
                                                    <!--<Setter Ta TargetName="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}, Path=x:Name}" Property="Foreground" Value="Red"/>-->
                                                    <Setter Property="Foreground" Value="{StaticResource ThemeColorBrush}"/>
                                            </Trigger>
                                        </ControlTemplate.Triggers>
                                    </ControlTemplate>
                                </Setter.Value>
                    </Setter>
                </Style>
                    </ToggleButton.Style>
                </ToggleButton>
                </Border>
            </TreeViewItem>
        </TreeViewItem>
    </TreeViewItem>
    <TreeViewItem Header="Item 2"/>
</TreeView>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM