WPF扩展器控件-转换的页眉宽度问题

丹尼斯

我有一个WPF扩展器控件,ItemsControl其中的ExpandDirection设置为Right另外,我还自定义了标题控件(ToggleButton),以获得以下外观。在此处输入图片说明

我希望标题内容从下到上垂直放置。所以我将RenderTransform属性应用于ToggleButton,这就是我得到的:在此处输入图片说明

标头的高度应与数据网格的高度相同。因此,我将切换按钮的宽度设置为数据网格的高度。

现在,切换按钮的宽度将是高度(就像我已经旋转了切换按钮一样),Expanders当它们处于“折叠”模式时,它们之间会留有很大的间隙在此处输入图片说明

注意:以玫瑰色边框的部分是扩展器的实际宽度。如何在不损害要求的情况下减小标题的宽度

编辑:添加XAML样式

<Style x:Key="ExpanderStyle" TargetType="{x:Type Expander}">
        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
        <Setter Property="Background" Value="Transparent" />
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        <Setter Property="VerticalContentAlignment" Value="Stretch" />
        <Setter Property="BorderBrush" Value="Transparent" />
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Expander}">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            CornerRadius="3"
                            SnapsToDevicePixels="true">
                        <DockPanel>
                            <ToggleButton x:Name="HeaderSite"
                                          Height="50"
                                          MinHeight="0"
                                          HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                          VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                                          Content="{TemplateBinding Header}"
                                          ContentTemplate="{TemplateBinding HeaderTemplate}"
                                          ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}"
                                          DockPanel.Dock="Top"
                                          FocusVisualStyle="{StaticResource ExpanderHeaderFocusVisual}"
                                          FontFamily="{TemplateBinding FontFamily}"
                                          FontSize="{TemplateBinding FontSize}"
                                          FontStretch="{TemplateBinding FontStretch}"
                                          FontStyle="{TemplateBinding FontStyle}"
                                          FontWeight="{TemplateBinding FontWeight}"
                                          Foreground="{TemplateBinding Foreground}"
                                          IsChecked="{Binding IsExpanded,
                                                              Mode=TwoWay,
                                                              RelativeSource={RelativeSource TemplatedParent}}"
                                          Padding="{TemplateBinding Padding}"
                                          RenderTransformOrigin="0.5,0.5"
                                          Style="{StaticResource ExpanderDownHeaderStyle}"
                                          Template="{StaticResource ExpanderButtonTemplate}">
                                <ToggleButton.RenderTransform>
                                    <TransformGroup>
                                        <ScaleTransform />
                                        <SkewTransform />
                                        <RotateTransform Angle="-90" />
                                        <TranslateTransform />
                                    </TransformGroup>
                                </ToggleButton.RenderTransform>
                            </ToggleButton>

                            <ContentPresenter x:Name="ExpandSite"
                                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              DockPanel.Dock="Bottom"
                                              Focusable="false"
                                              Visibility="Collapsed" />
                        </DockPanel>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsExpanded" Value="true">
                            <Setter TargetName="ExpandSite" Property="Visibility" Value="Visible" />

                        </Trigger>
                        <Trigger Property="ExpandDirection" Value="Right">
                            <Setter TargetName="ExpandSite" Property="DockPanel.Dock" Value="Right" />
                            <Setter TargetName="HeaderSite" Property="DockPanel.Dock" Value="Left" />
                            <Setter TargetName="HeaderSite" Property="Style" Value="{StaticResource ExpanderRightHeaderStyle}" />
                        </Trigger>
                        <Trigger Property="ExpandDirection" Value="Up">
                            <Setter TargetName="ExpandSite" Property="DockPanel.Dock" Value="Top" />
                            <Setter TargetName="HeaderSite" Property="DockPanel.Dock" Value="Bottom" />
                            <Setter TargetName="HeaderSite" Property="Style" Value="{StaticResource ExpanderUpHeaderStyle}" />
                        </Trigger>
                        <Trigger Property="ExpandDirection" Value="Left">
                            <Setter TargetName="ExpandSite" Property="DockPanel.Dock" Value="Left" />
                            <Setter TargetName="HeaderSite" Property="DockPanel.Dock" Value="Right" />
                            <Setter TargetName="HeaderSite" Property="Style" 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>
谢伊

代替使用渲染变换,而使用布局变换。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

WPF +扩展器控制问题

来自分类Dev

wpf-扩展器标题适合内容宽度?

来自分类Dev

WPF-Stackpanel中有多个扩展器的问题

来自分类Dev

更新面板中的模式弹出窗口扩展器中的Web用户控件中的jQuery问题

来自分类Dev

如何以编程方式增加wpf扩展器内容的宽度?

来自分类Dev

如何以编程方式增加wpf扩展器内容的宽度?

来自分类Dev

WPF动态创建的按钮和扩展器控件

来自分类Dev

在WPF扩展器控件上更改边框的拐角半径?

来自分类Dev

扩展器标题的宽度影响外部的scrollviewer

来自分类Dev

WTX(Websphere转换扩展器)有什么作用

来自分类Dev

如何停止WPF控件(使用扩展器)在ItemControl中扩展到父级的高度

来自分类Dev

访问扩展器控件的子级

来自分类Dev

WPF扩展器未扩展

来自分类Dev

WPF扩展器未扩展

来自分类Dev

带多个按钮的WPF扩展器

来自分类Dev

带GridSplitter的WPF扩展器

来自分类Dev

带GridSplitter的WPF扩展器

来自分类Dev

错误:在PreRender之前可能未注册扩展器控件

来自分类Dev

错误:扩展器控件可能未在PreRender之前注册

来自分类Dev

使扩展器控件标头变为粗体

来自分类Dev

带有光标点的ASP.NET自动完成扩展器选择问题

来自分类Dev

WPF如何始终在TreeView上显示扩展器

来自分类Dev

使用触摸滑动来拖动打开WPF扩展器

来自分类Dev

WPF-网格扩展器-用餐空间

来自分类Dev

扩展器内部列表框的VerticalScrollBar-WPF

来自分类Dev

ItemsControl中使用的WPF扩展器叠加层

来自分类Dev

在WPF中,根据组合框输入创建扩展器

来自分类Dev

无法使用样式禁用WPF扩展器

来自分类Dev

带有扩展器的WPF分组组合框