C# 更改现有主题的样式(AvalonDock)
我想更改AvalonDock的Metro主题颜色。我也问了,但到目前为止我还没有得到答案 我将以下XAML()标识为我想改变的颜色的一部分:C# 更改现有主题的样式(AvalonDock),c#,wpf,xaml,avalondock,C#,Wpf,Xaml,Avalondock,我想更改AvalonDock的Metro主题颜色。我也问了,但到目前为止我还没有得到答案 我将以下XAML()标识为我想改变的颜色的一部分: <Style TargetType="avalonDockControls:AnchorablePaneTitle"> <Setter Property="Template"> <Setter.Value> <ControlTemplate> ... <
<Style TargetType="avalonDockControls:AnchorablePaneTitle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
...
<ControlTemplate.Triggers>
...
<DataTrigger Binding="{Binding Model.IsActive, RelativeSource={RelativeSource Mode=Self}}" Value="True">
<!-- following XAML line -->
<Setter Property="BorderBrush" Value="{DynamicResource AvalonDock_ThemeMetro_BaseColor3}" />
<Setter Property="BorderThickness" Value="0,3,0,0"/>
</DataTrigger>
...
</ControlTemplate.Triggers>
...
...
...
...
...
您可以看到:笔刷获得BaseColor3(默认为蓝色)
现在我在我的XAML中更改了颜色:
<Window.Resources>
...
<SolidColorBrush x:Key="AvalonDock_ThemeMetroBaseColor3" Color="Red" />
</Window.Resources>
...
没有什么变化。颜色保持蓝色。现在我很困惑。所以它必须是错误的属性来改变,或者是某些东西阻止了颜色的改变,或者是它使用了旧的值或者其他东西
为什么它不起作用?我怎样才能发现并修复这些问题?我想问题在于:
<avalon:DockingManager>
<avalon:DockingManager.Theme>
<avalon:MetroTheme />
</avalon:DockingManager.Theme>
...
</avalon:DockingManager>
...
我删除了主题设置并创建了自己的资源字典(从AvalonDock源代码复制了样式)。我必须修复一些错误:
- 找不到BaseColorXX->从较旧AvalonDock版本的VS2010主题复制
- TargetType“HwndHostInstance”与元素“LayoutAutoHideWindowControl->用x:Key=“{x:type avalonDockControls:LayoutHideWindowControl}”注释掉样式的类型不匹配
- Remove
(导致错误)BasedOn=“{Static Resource{x:Type MenuItem}}”
- 使用复制的图像将图像路径更改为我自己的项目路径
在这之后,它开始工作。解决方案似乎是将SolidColorBrush添加到xaml文件中的DockingManager资源中
<avalonDock:DockingManager Grid.Row="1" x:Name="DockingManager">
<avalonDock:DockingManager.Resources>
<SolidColorBrush x:Key="AvalonDock_Expression_BaseColor1" Color="Red"/>
<SolidColorBrush x:Key="AvalonDock_Expression_BaseColor3" Color="Red"/>
<SolidColorBrush x:Key="AvalonDock_Expression_BaseColor4" Color="Red"/>
<SolidColorBrush x:Key="AvalonDock_Expression_BaseColor5" Color="Red"/>
<SolidColorBrush x:Key="AvalonDock_Expression_BaseColor8" Color="Red"/>
<SolidColorBrush x:Key="AvalonDock_Expression_BaseColor9" Color="Red"/>
<SolidColorBrush x:Key="AvalonDock_Expression_BaseColor10" Color="Red"/>
<SolidColorBrush x:Key="AvalonDock_Expression_BaseColor11" Color="Red" />
<SolidColorBrush x:Key="AvalonDock_Expression_BaseColor13" Color="Red"/>
</avalonDock:DockingManager.Resources>
<avalonDock:DockingManager.Theme>
<avalonDock:ExpressionDarkTheme/>
</avalonDock:DockingManager.Theme>
你复制了吗?我已经看过了,它使用了一些甚至在中都不存在的BaseColorXX
,为什么?@JobaDiniz我试图复制所有东西,包括Theme.xaml。我不得不在brush.xaml中添加一些BaseColorXX
定义。我从源代码中复制了旧的brush.xaml。例如,这是Brusks.xaml并包含所有需要的定义。谢谢,但您确实更改了它们的值,对吗?例如,BaseColor31
(从您的链接中)呈淡黄色,不符合metro样式。@JobaDiniz是的,我更改了一些值。过了一段时间后,我完全更改了笔刷(替换为一些名称更好的笔刷变量)。我用洋红替换颜色来识别画笔。我创建了3个不同的主题。如果有用的话:我使用的旧版本()用于非常轻的metro样式,没有太多替换的变量。