简体   繁体   English

如何在分组扩展器WPF中隐藏切换按钮

[英]How to hide togglebutton in grouping expander wpf

I want to hide or remove the togglebutton which appears in my grouping headers without losing functionality (User can press anywhere on the group to expand/close it) but I can't figure out where I can edit it in my current code or how can I do it otherwise to maintain what I have. 我想隐藏或删除出现在分组标题中的切换按钮,而又不丢失功能(用户可以按组中的任意位置以展开/关闭它),但是我不知道可以在当前代码中在何处进行编辑或如何编辑否则,我会这样做以保持自己的财产。 I posted an image and my group xaml style code below. 我在下面发布了图片和我的小组xaml样式代码。

https://i.imgur.com/7NjF4AS.png https://i.imgur.com/7NjF4AS.png

<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">

        <Setter Property="Template">

            <Setter.Value >
                <ControlTemplate TargetType="{x:Type GroupItem}">

                    <Expander x:Name="exp" Background="Firebrick">


                        <Expander.Header>

                            <StackPanel Orientation="Horizontal" Height="40" >
                                <TextBlock Text="{Binding Name}" Margin="0,0,0,0" FontSize="23" VerticalAlignment="Center" Foreground="White" />
                                <TextBlock Text="{Binding ItemCount}" FontSize="25" FontWeight="Bold" Margin="10,0,0,0" VerticalAlignment="Center" Foreground="White" />
                                <TextBlock Text="item(s)" FontSize="25" Margin="10,0,0,0" Width="1000"  VerticalAlignment="Center" Foreground="White"/>


                            </StackPanel>
                        </Expander.Header>


                        <ItemsPresenter>


                        </ItemsPresenter>

                        <Expander.Style>
                            <Style TargetType="Expander">

                                <Setter Property="IsExpanded" Value="False"></Setter>
                                <Style.Triggers>

                                    <DataTrigger Binding="{Binding Name}" Value="Title" >
                                        <Setter Property="IsExpanded" Value="True"></Setter>
                                        <Setter Property="IsEnabled" Value="False" />

                                    </DataTrigger>

                                </Style.Triggers>
                            </Style>
                        </Expander.Style>
                    </Expander>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

There is no property that you simply can set to get rid of the arrow. 没有可以简单设置以摆脱箭头的属性。 You need to modify the template of the Expander. 您需要修改扩展器的模板。 Try this: 尝试这个:

<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
    <Setter Property="Template">
        <Setter.Value >
            <ControlTemplate TargetType="{x:Type GroupItem}">
                <Expander x:Name="exp" Background="Firebrick">
                    <Expander.Header>
                        <StackPanel Orientation="Horizontal" Height="40" >
                            <TextBlock Text="{Binding Name}" Margin="0,0,0,0" FontSize="23" VerticalAlignment="Center" Foreground="White" />
                            <TextBlock Text="{Binding ItemCount}" FontSize="25" FontWeight="Bold" Margin="10,0,0,0" VerticalAlignment="Center" Foreground="White" />
                            <TextBlock Text="item(s)" FontSize="25" Margin="10,0,0,0" Width="1000"  VerticalAlignment="Center" Foreground="White"/>
                        </StackPanel>
                    </Expander.Header>
                    <ItemsPresenter />
                    <Expander.Style>
                        <Style TargetType="Expander">
                            <Setter Property="IsExpanded" Value="False"></Setter>
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="{x:Type Expander}">
                                        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
                                            <DockPanel>
                                                <ToggleButton x:Name="HeaderSite" ContentTemplate="{TemplateBinding HeaderTemplate}" ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}" Content="{TemplateBinding Header}" DockPanel.Dock="Top" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FontStyle="{TemplateBinding FontStyle}" FontStretch="{TemplateBinding FontStretch}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsChecked="{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" MinWidth="0" MinHeight="0" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}">
                                                    <ToggleButton.Template>
                                                        <ControlTemplate TargetType="{x:Type ToggleButton}">
                                                            <Border Padding="{TemplateBinding Padding}">
                                                                <ContentPresenter Margin="0,4,0,0" Grid.Row="1" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Top"/>
                                                            </Border>
                                                        </ControlTemplate>
                                                    </ToggleButton.Template>
                                                </ToggleButton>
                                                <ContentPresenter x:Name="ExpandSite" DockPanel.Dock="Bottom" Focusable="false" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="Collapsed" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                                            </DockPanel>
                                        </Border>
                                        <ControlTemplate.Triggers>
                                            <Trigger Property="IsExpanded" Value="true">
                                                <Setter Property="Visibility" TargetName="ExpandSite" Value="Visible"/>
                                            </Trigger>
                                            <Trigger Property="ExpandDirection" Value="Right">
                                                <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Right"/>
                                                <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Left"/>
                                                <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderRightHeaderStyle}"/>
                                            </Trigger>
                                            <Trigger Property="ExpandDirection" Value="Up">
                                                <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Top"/>
                                                <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Bottom"/>
                                                <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderUpHeaderStyle}"/>
                                            </Trigger>
                                            <Trigger Property="ExpandDirection" Value="Left">
                                                <Setter Property="DockPanel.Dock" TargetName="ExpandSite" Value="Left"/>
                                                <Setter Property="DockPanel.Dock" TargetName="HeaderSite" Value="Right"/>
                                                <Setter Property="Style" TargetName="HeaderSite" Value="{StaticResource ExpanderLeftHeaderStyle}"/>
                                            </Trigger>
                                            <Trigger Property="IsEnabled" Value="false">
                                                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                                            </Trigger>
                                        </ControlTemplate.Triggers>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Name}" Value="Title" >
                                    <Setter Property="IsExpanded" Value="True"></Setter>
                                    <Setter Property="IsEnabled" Value="False" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Expander.Style>
                </Expander>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

You can copy the default style/template of a control into your XAML markup by right-clicking on it in design mode in Visual Studio or in Blend and choose Edit Template->Edit a copy and then edit it as per your requirements. 通过在Visual Studio或Blend中的设计模式中右键单击控件的默认样式/模板,可以将其复制到XAML标记中,然后选择“编辑模板”->“编辑副本”,然后根据需要对其进行编辑。

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

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