2014-09-08 17 views
5

AvalonDock'un Metro tema rengini değiştirmek istiyorum. Ayrıca a related question on Codeplex sordum ama şimdiye kadar bir cevap almadım.Mevcut temanın stilini değiştirme (AvalonDock)

<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> 

    ... 

görebilirsiniz:

ben değiştirmek istiyorum, sanırım, renk sorumludur parça olarak aşağıdaki XAML ( source file) tespit fırça BaseColor3 alır: (a mavimsi bir renk varsayılan olarak).

Şimdi benim XAML böyle renk değiştirdi:

<Window.Resources> 
    ... 
    <SolidColorBrush x:Key="AvalonDock_ThemeMetroBaseColor3" Color="Red" /> 
</Window.Resources> 

Hiçbir şey değiştirir. Renk, mavimsi kalır. Şimdi kafam karıştı. Yani değişmek için yanlış bir özellik olmalı ya da bir şey renk değişimini önler ya da/veya iç değerini eski değeri kullanır ya da bir şey ...

Neden çalışmıyor? Bu tür sorunları nasıl keşfedebilir ve giderebilirim?

cevap

7

Sorun şuydu sanırım:

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

    ... 

</avalon:DockingManager> 

Ben tema ayarı kaldırıldı ve (AvalonDock kaynağından stil kopyalanmış) bir kendi Kaynak sözlüğünü oluşturdu. Bazı hataları düzeltmek zorunda kaldı:

  • BaseColorXX bulunamadı -> eski AvalonDock versiyonunun VS2010 temasından kopya
  • TARGETTYPE 'HwndHostInstance' "öğesinin türüyle eşleşmiyor LayoutAutoHideWindowControl -> x ile Stil açıklama : Anahtar = "{x: Tip avalonDockControls: LayoutAutoHideWindowControl}")
  • Kaldır BasedOn="{Static Resource {x:Type MenuItem}}" (bir hata)
  • Değiştir kopyalanan görüntülerin ile kendi proje yoluna görüntü yolları neden

Bundan sonra çalıştı.

+0

[theme.xaml] dosyasını kopyaladınız mı (https://avalondock.codeplex.com/SourceControl/latest#Version2.0/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml)? Ona baktım ve [brushes.xaml] 'da bulunmayan birkaç' BaseColorXX 'kullanıyor (https://avalondock.codeplex.com/SourceControl/latest#Version2.0/Xceed.Wpf.AvalonDock .Themes.Metro/Brushes.xaml), nasıl oldu? – JobaDiniz

+0

@JobaDiniz Her şeyi kopyalamaya çalıştım, Theme.xaml dahil. Brushes.xaml için bazı 'BaseColorXX' tanımlarını eklemek zorunda kaldım. Bunları kaynaktan daha eski bir Brushes.xaml'den kopyaladım. Örneğin [this] (https://avalondock.codeplex.com/SourceControl/changeset/89595#Version2.0/AvalonDock/AvalonDock.Theme.VS2010/Brushes.xaml) Brushes.xaml'ın ilk taahhüdü ve gerekli tüm içeriği içeriyordu. tanımlar. – fedab

+0

Teşekkürler, ama değerlerini değiştirdiniz, değil mi? Örneğin, 'BaseColor31' (bağlantınızdan) metro stiline uymayan sarımsıdır. – JobaDiniz

İlgili konular