Hy everyone!AvalonDock 2.2 - 全宽TitleTemplate(填充父容器)
我AvalonDock 2.2(WPF工具包)创建的标题模板。问题在于,只有右键单击标题中包含某些内容(而不是可锚定的整个宽度)的部分时,才会触发LayoutAnchorable的上下文菜单。
这是我现在使用的相关代码段:
<ad:DockingManager x:Class="Pdn.Gui.Docking.Control.DockingSystem" ...
AnchorablesSource="{Binding Path=Panels}">
<ad:DockingManager.Resources>
<DataTemplate x:Key="DockingWindowTitleDataTemplate" DataType="{x:Type ad:LayoutContent}">
<StackPanel ToolTip="{Binding Path=Content.ToolTip}" Orientation="Horizontal" HorizontalAlignment="Stretch">
<Image MaxHeight="16" MaxWidth="16" VerticalAlignment="Center"
Source="{Binding Path=Content.IconSource, Converter={StaticResource IconToImageSourceConverter}}" />
<TextBlock Text="{Binding Path=Content.Name}" Margin="5,0,0,0" VerticalAlignment="Center"/>
<TextBlock Text="*" Visibility="{Binding Path=Content.DirtySignVisibility}" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="DockingWindowTitleGridDataTemplate" DataType="{x:Type ad:LayoutContent}">
<Grid ToolTip="{Binding Path=Content.ToolTip}" HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" MaxHeight="16" MaxWidth="16" VerticalAlignment="Center"
Source="{Binding Path=Content.IconSource, Converter={StaticResource IconToImageSourceConverter}}" />
<TextBlock Grid.Column="1" Text="{Binding Path=Content.Name}" Margin="5,0,0,0" VerticalAlignment="Center"/>
<TextBlock Grid.Column="2" Text="*" Visibility="{Binding Path=Content.DirtySignVisibility}" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
<DataTemplate x:Key="DefaultPanelTitle">
<TextBlock Text="{Binding Path=Content.Name}" TextTrimming="CharacterEllipsis" />
</DataTemplate>
...
</ad:DockingManager.Resources>
<ad:DockingManager.AnchorableTitleTemplate>
<StaticResource ResourceKey="DockingWindowTitleDataTemplate" />
</ad:DockingManager.AnchorableTitleTemplate>
...
</ad:DockingManager>
当我使用DefaultPanelTitle
模板(这是主题的默认模板),一切都很好,在上下文菜单上触发标题部分的全部宽度。
然而,当我使用其他两个模板(图像名称 - IsDirty元素),上下文菜单仅在标题区(和星号不正确)的开始触发。
我猜我应该告诉容器,以填补它的父容器,但我无法弄清楚如何。我HorizontalAlignment
集中使用StackPanel
,Grid
,DockPanel
(LastChildFill = "True"
)到Stretch
。我应该使用什么样的容器? 我错过了什么?
P.S:我只能给你的答案回应再持续12小时,然后我离开了一段时间(一周)。但我不会放弃这个问题,直到它被回答:)感谢您的耐心。
不得不更改数据类型= “{X:广告类型:LayoutContent}” 到数据类型= “{X:广告类型:LayoutAnchorable}”,因为从我的LayoutContent结束不存在(v.2.5) – lionheart