현재 AvalonDock2를 사용하여 간단한 UI를 작성 중입니다. 정확하게 이해하면 LayoutItemTemplate을 사용하여 모든 문서와 좌상 수에 대한 템플릿을 설정할 수 있습니다.AvalonDock2 : 문서 전용 LayoutItemTemplate
여기 내 문제가 있습니다. "하드 코딩 된"앵커 템플릿을 갖고 싶습니다. 이 템플릿 세트를 가지고하는 것이 합리적이다, 그 문서의 경우
DocumentsSource="{Binding Path=Editor.EditingModelObjects}"
를 통해
다른 측면에서<avalonDock:LayoutAnchorable Title="Dialogs"
CanClose="False"
CanHide="False"
CanFloat="False">
<integratorUI:Explorer DataContext="{Binding Path=Editor.ModelsDialogs}"/>
</avalonDock:LayoutAnchorable>
, 내 중앙 문서 창은 공급되는 문서를, 그래서 : Anchorables 모두는 다음과 같이 은 ContentControl을 사용하고 이제 문제는 LayoutItemTemplate을 설정하면 hardco을 무시하고, 너무
<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>
같은 적절한 스타일을 선택할 수 있습니다 내 앵커리지에 대한 헌신적 인 컨텐츠 ...
어떻게 앵커 클립과 템플리트 문서를 모두 하드 코딩 할 수 있습니까? 이전 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 Text="{Binding Path=Content.Type.Name}"/>
</DataTemplate>
</avalonDock:DockingManager.DocumentHeaderTemplate>
<avalonDock:LayoutRoot>
<avalonDock:LayoutPanel Orientation="Horizontal">
<avalonDock:LayoutAnchorablePane DockWidth="350">
<avalonDock:LayoutAnchorable Title="Dialogs" CanClose="False" CanHide="False" CanFloat="False">
<integratorUI:Explorer DataContext="{Binding Path=Editor.ModelsDialogs}"/>
</avalonDock:LayoutAnchorable>
<avalonDock:LayoutAnchorable Title="NPCs" CanClose="False" CanHide="False" CanFloat="False">
<integratorUI:Explorer DataContext="{Binding Path=Editor.ModelsNpcs}"/>
</avalonDock:LayoutAnchorable>
<avalonDock:LayoutAnchorable Title="Rooms" CanClose="False" CanHide="False" CanFloat="False">
<integratorUI:Explorer DataContext="{Binding Path=Editor.ModelsRooms}"/>
</avalonDock:LayoutAnchorable>
<avalonDock:LayoutAnchorable Title="TileSet" CanClose="False" CanHide="False" CanFloat="False">
<integratorUI:Explorer DataContext="{Binding Path=Editor.ModelsTileSets}"/>
</avalonDock:LayoutAnchorable>
<avalonDock:LayoutAnchorable Title="Zones" CanClose="False" CanHide="False" CanFloat="False">
<integratorUI:Explorer DataContext="{Binding Path=Editor.ModelsZones}"/>
</avalonDock:LayoutAnchorable>
</avalonDock:LayoutAnchorablePane>
<avalonDock:LayoutDocumentPane x:Name="documentPane">
</avalonDock:LayoutDocumentPane>
<avalonDock:LayoutAnchorablePane DockWidth="300">
<avalonDock:LayoutAnchorable Title="Context"
CanClose="False"
CanHide="False"
CanFloat="False">
<TextBox/>
</avalonDock:LayoutAnchorable>
</avalonDock:LayoutAnchorablePane>
</avalonDock:LayoutPanel>
<avalonDock:LayoutRoot.BottomSide>
<avalonDock:LayoutAnchorSide>
<avalonDock:LayoutAnchorGroup>
<avalonDock:LayoutAnchorable Title="Console"
CanClose="False"
CanHide="False"
CanFloat="False">
<TextBlock Text="Test"/>
</avalonDock:LayoutAnchorable>
<avalonDock:LayoutAnchorable Title="Error List"
CanClose="False"
CanHide="False"
CanFloat="False">
<TextBlock Text="Test"/>
</avalonDock:LayoutAnchorable>
</avalonDock:LayoutAnchorGroup>
</avalonDock:LayoutAnchorSide>
</avalonDock:LayoutRoot.BottomSide>
</avalonDock:LayoutRoot>
</avalonDock:DockingManager>
에 대한 DocumentTemplate 및 FileStatsViewTemplate에 대한 FileViewTemplate를 상호 교환하여 원하는 결과를 얻을 수 있지만, 그것을 할 수있는 좋은 방법을 지적하는 당신에게 소품을 줄 것이다. – NGauthier