У меня проблема с элементами управления AvalonDock. Заголовок моей панели белым по синему при отображении, черный над белым, когда он имеет вкладку и должен быть черным над белым, когда AutoHiden и мышь над вкладкой (вид "предварительного просмотра", поэтому еще не состыковался)... Но как скриншот будет лучше описывать проблему, чем проблема:
И здесь contentpresenter (строка 429 Metro Theme.xaml в последней исходной версии)
<ContentPresenter
x:Name="Header"
Margin="5,3"
TextElement.Foreground="{DynamicResource AvalonDock_ThemeMetro_Foreground}"
Content="{Binding Model, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplate="{Binding Model.Root.Manager.AnchorableTitleTemplate, RelativeSource={RelativeSource TemplatedParent}}"
ContentTemplateSelector="{Binding Model.Root.Manager.AnchorableTitleTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}"/>
(AvalonDock_ThemeMetro_Foreground - белый, как обычный передний план, поскольку он более синий, например, заголовок)
Должно быть:
Есть ли у кого-нибудь представление о том, кто поменялся для изменения стиля? У меня нет глубоких знаний о том, как AvalonDocks работает внутри, и мои фактические исследования просто дали мне базовое понимание большой картины, но я не могу точно определить способ ее выполнения.
Я выяснил эту проблему. По-видимому, стиль, применяемый к LayoutAnchorableControl, не тот, который вы определяете, а тот, который вы используете, из 'generic.xaml' при размещении в LayoutAutoHideWindowControl. Я до сих пор не знаю, почему и как, но обновление стиля "generic.xaml" устраняет проблему. Я продолжу исследовать причину и найти способ заставить его использовать пользовательский стиль при размещении в "LayoutAutoHideWindowControl".
EDIT Итак, я понял, что это было действительно глупо, когда я определял стиль LayoutAutoHideWindow, я не обращал внимания на свойство "AnchorableStyle", позволяющее вам предоставить стиль для применения к созданному LayoutAnchorableControl. Итак, вот стиль LayoutAnchorabeControl:
<!--The "Metro" LayoutAnchorableControl Style-->
<Style TargetType="{x:Type avalonDockControls:LayoutAnchorableControl}" x:Key="AvalonDock_ThemeMetro_LayoutAnchorableControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type avalonDockControls:LayoutAnchorableControl}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border x:Name="Header" Background="{DynamicResource AvalonDock_ThemeMetro_HeaderBackground}">
<avalonDockControls:AnchorablePaneTitle Model="{Binding Model, RelativeSource={RelativeSource TemplatedParent}}"/>
</Border>
<ContentPresenter Grid.Row="1" FlowDirection="{TemplateBinding FlowDirection}"
Content="{Binding LayoutItem.View, RelativeSource={RelativeSource TemplatedParent}}"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=Model.IsFloating}" Value="True"/>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=Model.Parent.IsDirectlyHostedInFloatingWindow}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Collapsed" TargetName="Header"/>
</MultiDataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--Apply it as default too-->
<Style TargetType="{x:Type avalonDockControls:LayoutAnchorableControl}" BasedOn="{StaticResource AvalonDock_ThemeMetro_LayoutAnchorableControl}" />
И здесь, как сделать LayoutAutoHideWindowControl использовать его как стиль, применяемый к LayoutAnchorableControl, который он создает:
<Style x:Key="{x:Type avalonDockControls:LayoutAutoHideWindowControl}" TargetType="{x:Type avalonDockControls:LayoutAutoHideWindowControl}">
<Setter Property="Background" Value="{DynamicResource AvalonDock_ThemeMetro_Background}"/>
<Setter Property="AnchorableStyle" Value="{StaticResource AvalonDock_ThemeMetro_LayoutAnchorableControl}" />
</Style>