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

fed*_*dab 5 c# wpf xaml avalondock

我想更改AvalonDock的Metro主题颜色.我还询问了有关Codeplex的相关问题,但到目前为止我还没有得到答案.

我将以下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>

    ...
Run Code Online (Sandbox Code Playgroud)

你可以看到:画笔获得了BaseColor3(默认为蓝色).

现在我改变了我的XAML中的颜色:

<Window.Resources>
  ...
  <SolidColorBrush x:Key="AvalonDock_ThemeMetroBaseColor3" Color="Red" />
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)

没有什么变化.颜色保持蓝色.现在我很困惑.所以它必须是错误的属性来改变或某些东西阻止颜色改变或/和内部它使用旧值或东西......

为什么不起作用?我怎样才能发现这些问题并修复它?

fed*_*dab 7

我猜问题是这样的:

<avalon:DockingManager>
  <avalon:DockingManager.Theme>
    <avalon:MetroTheme />
  </avalon:DockingManager.Theme>

  ...

</avalon:DockingManager>
Run Code Online (Sandbox Code Playgroud)

我删除了主题设置并创建了自己的资源字典(从AvalonDock源复制了样式).我不得不修复一些错误:

  • 未找到BaseColorXX - >从较旧的AvalonDock版本的VS2010主题复制
  • TargetType'HwndHostInstance'与元素类型"LayoutAutoHideWindowControl - >注释掉样式x:Key ="{x:Type avalonDockControls:LayoutAutoHideWindowControl}")
  • 删除BasedOn="{Static Resource {x:Type MenuItem}}"(导致错误)
  • 使用复制的图像将图像路径更改为我自己的项目路径

之后它起作用了.

  • 如果它有用:我使用的旧版本([link](http://pastebin.com/fXM6mttA))非常轻的都市风格的东西没有那么多的替换变量. (2认同)