현재 해결 방법에는 두 가지 문제가 있습니다.
AnchorablePaneTitle
의 스타일 지정은 팬이 DockingManager
에 도킹 된 경우에만 작동합니다. 창을 도킹 해제하는 즉시 AvalonDock은 루트 요소를 다른 구조의 LayoutFloatingWindowControl
으로 변경하기 때문에 더 이상 AnchorablePaneTitle
이 없습니다.
두 번째 문제는 IsFocused
속성을 사용하고 있다는 것입니다. AnchorablePaneTitle
은 전혀 초점을 맞출 수 없기 때문에이 기능이 작동하지 않습니다 (기본값은 TextBlock
입니다).
이 작업을 수행하려면 AnchorableTitleTemplate
속성 인 DockingManager
을 사용하여 제목에 DataTemplate
을 만들어야합니다. 고정 또는 고정 해제 : 여기
<xcad:DockingManager.AnchorableTitleTemplate>
<DataTemplate>
<Grid>
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding Model.IsActive, Mode=OneWay,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type xcad:LayoutAnchorableControl}},
FallbackValue=False}" Value="True">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsKeyboardFocusWithin, Mode=OneWay,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type xcad:LayoutFloatingWindowControl}},
FallbackValue=False}" Value="True">
<Setter Property="Background" Value="Blue"/>
</DataTrigger>
</Style.Triggers>
<Setter Property="Background" Value="Green"/>
</Style>
</Grid.Style>
<TextBlock Foreground="White" FontWeight="Bold" Text="{Binding Title}" />
</Grid>
</DataTemplate>
</xcad:DockingManager.AnchorableTitleTemplate>
내가 anchorable 현재의되는 모드에 따라 서로 다른 특성에 대응 개의 데이터를 생성 트리거 : 여기
는 일례이다.
도킹 된 상태에서는 제대로 작동하는 Model.IsActive
속성을 사용합니다. 도킹 해제 된 (부동) 상태의 경우 먼저 xcad:LayoutFloatingWindowControl
(Window
에서 파생 됨)이라는 IsActive
속성을 시도했지만 모든 부동 창에 대해 항상 true
이었습니다. 어쩌면 이것 모두는 Owner
(기본 창)을 가지고 있기 때문일 수 있습니다. 그래서 방금 부동 창문에 잘 작동하는 IsKeyboardFocusWithin
을 사용하기로 결정했습니다.
XAML 마크 업에 따르면, ** 머리글 **에 포커스를 맞추는 경우에만 작동합니다. 달성하고자하는 것은 창 (즉, 내용에 포커스가 있음)이 활성화되어있을 때 헤더를 빨간색으로 만드는 것입니다. 권리? – dymanoid
네, 맞습니다. 콘텐츠가 선택/집중되면 빨간색이어야합니다. – Suplanus