我目前正在使用AvalonDock2构建一个简单的UI。如果我正确理解,则可以使用LayoutItemTemplate为所有文档和可打印对象设置模板。
现在这是我的问题:我想拥有“硬编码”可锚定模板。所有可锚定对象如下所示:
<avalonDock:LayoutAnchorable Title="Dialogs"
CanClose="False"
CanHide="False"
CanFloat="False">
<integratorUI:Explorer DataContext="{Binding Path=Editor.ModelsDialogs}"/>
</avalonDock:LayoutAnchorable>
Run Code Online (Sandbox Code Playgroud)
另一方面,我的中央文档窗格正在通过
DocumentsSource="{Binding Path=Editor.EditingModelObjects}"
Run Code Online (Sandbox Code Playgroud)
对于那些文档,设置模板很有意义,因此我可以使用ContentControl并选择适当的样式,如下所示
<Style x:Key="DocumentStyle" TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Type}" Value="{x:Static Member=integratorCore:ModelObjectType.Npc}">
<DataTrigger.Setters>
<Setter Property="Template" Value="{StaticResource ResourceKey=NpcViewTemplate}"/>
</DataTrigger.Setters>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Type}" Value="{x:Static Member=integratorCore:ModelObjectType.Room}">
<DataTrigger.Setters>
<Setter Property="Template" Value="{StaticResource ResourceKey=RoomViewTemplate}"/>
</DataTrigger.Setters>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Type}" Value="{x:Static Member=integratorCore:ModelObjectType.Dialog}">
<DataTrigger.Setters>
<Setter Property="Template" Value="{StaticResource ResourceKey=DialogViewTemplate}"/>
</DataTrigger.Setters>
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
现在的问题是,设置LayoutItemTemplate会覆盖我的锚点的硬编码内容...
我怎样才能同时对固定锚和模板化文档进行硬编码?就像在旧的AvalonDock版本中一样,或者我应该如何在新版本中正确处理呢?
这是完整的DockingManager:
<avalonDock:DockingManager x:Name="dockingManager"
Grid.Row="2"
DocumentsSource="{Binding Path=Editor.EditingModelObjects}"
DocumentClosing="DockingManagerDocumentClosing">
<avalonDock:DockingManager.Theme>
<avalonDock:ExpressionDarkTheme/>
</avalonDock:DockingManager.Theme>
<!--<avalonDock:DockingManager.LayoutItemTemplate>
<DataTemplate>
<ContentControl Style="{StaticResource LayoutItemStyle}" />
</DataTemplate>
</avalonDock:DockingManager.LayoutItemTemplate>-->
<avalonDock:DockingManager.DocumentHeaderTemplate>
<DataTemplate>
<TextBlock …Run Code Online (Sandbox Code Playgroud)