如何放大并调整Xceed.Wpf.AvalonDock下拉搜索标签按钮样式
Xceed.Wpf.AvalonDock 触摸适配:放大标签搜索按钮方案
- 方案1:重写DocumentPane控件模板
Xceed版本的标签搜索按钮(默认控件名为PART_ShowContextMenuButton)封装在DocumentPane的默认控件模板中,你可以通过Visual Studio实时可视化树或Blend提取对应版本的DocumentPane默认样式,找到该按钮节点直接修改宽高、内边距等属性即可,核心修改片段参考:
<Style TargetType="{x:Type xcad:DocumentPane}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type xcad:DocumentPane}"> <!-- 保留原有模板其余内容不变 --> <xcad:DropDownButton x:Name="PART_ShowContextMenuButton" Width="48" <!-- 调整宽度适配触摸操作 --> Height="48" <!-- 调整高度适配触摸操作 --> Padding="8"> <!-- 同步放大内部下拉图标 --> <Path Width="20" Height="20" Data="M 0 0 L 4 4 L 8 0 Z" Fill="{TemplateBinding Foreground}" Stretch="Uniform"/> </xcad:DropDownButton> <!-- 保留原有模板其余内容不变 --> </ControlTemplate> </Setter.Value> </Setter> </Style>
- 方案2:隐式样式局部覆盖
如果不想全量重写控件模板,直接在DockingManager的资源节点下添加对应类型的隐式样式即可自动生效,和你已有的菜单项调整配置可以共存:
<xcad:DockingManager> <xcad:DockingManager.Resources> <Style TargetType="{x:Type xcad:DropDownButton}"> <Setter Property="Width" Value="48"/> <Setter Property="Height" Value="48"/> <Setter Property="Padding" Value="8"/> <!-- 同步调整内部图标尺寸 --> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate> <Path Width="20" Height="20" Data="M 0 0 L 4 4 L 8 0 Z" Fill="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type xcad:DropDownButton}}}" Stretch="Uniform"/> </DataTemplate> </Setter.Value> </Setter> </Style> </xcad:DockingManager.Resources> <!-- 你原有调整菜单项尺寸的代码 --> <xcad:DockingManager.DocumentPaneMenuItemHeaderTemplate> <DataTemplate> <TextBlock Text="{Binding Content.Name}" HorizontalAlignment="Center" VerticalAlignment="Center" Padding="10" FontSize="18"/> </DataTemplate> </xcad:DockingManager.DocumentPaneMenuItemHeaderTemplate> <!-- 其余DockingManager原有配置 --> </xcad:DockingManager>
注意:不同版本的Xceed.Wpf.AvalonDock内部控件结构存在细微差异,如果样式未生效,可以先通过实时可视化树定位到目标按钮的实际类型和属性,再针对性调整即可。
内容的提问来源于stack exchange,提问作者Joshua Chan
相关产品推荐
相关产品推荐

