Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改现有主题的样式(AvalonDock)_C#_Wpf_Xaml_Avalondock - Fatal编程技术网

C# 更改现有主题的样式(AvalonDock)

C# 更改现有主题的样式(AvalonDock),c#,wpf,xaml,avalondock,C#,Wpf,Xaml,Avalondock,我想更改AvalonDock的Metro主题颜色。我也问了,但到目前为止我还没有得到答案 我将以下XAML()标识为我想改变的颜色的一部分: <Style TargetType="avalonDockControls:AnchorablePaneTitle"> <Setter Property="Template"> <Setter.Value> <ControlTemplate> ... <

我想更改AvalonDock的Metro主题颜色。我也问了,但到目前为止我还没有得到答案

我将以下XAML()标识为我想改变的颜色的一部分:

<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样式,没有太多替换的变量。