2014-09-08 9 views
5

मैं एवलॉन डॉक के मेट्रो थीम रंग को बदलना चाहता हूं। मैंने a related question on Codeplex से भी पूछा लेकिन मुझे अब तक कोई जवाब नहीं मिला।मौजूदा थीम (एवलॉन डॉक) की शैली बदलें

मैं टुकड़े के रूप में निम्नलिखित XAML (source file) है कि, मुझे लगता है, रंग के लिए जिम्मेदार है पहचान मैं बदलना चाहते हैं:

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

कुछ भी नहीं बदलता है। रंग ब्लूश रहना। अब मैं उलझन में हूँ। तो यह बदलने के लिए गलत संपत्ति होनी चाहिए या कुछ रंग बदलने के लिए या आंतरिक रूप से पुराने मूल्य या कुछ का उपयोग करने से रोकता है ...

यह क्यों काम नहीं कर रहा है? मैं ऐसी समस्याओं को कैसे ढूंढ सकता हूं और इसे ठीक कर सकता हूं?

उत्तर

7

मुझे लगता है कि समस्या यह थी:

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

    ... 

</avalon:DockingManager> 

मैं विषय सेटिंग हटा दिया और एक खुद संसाधन शब्दकोश (AvalonDock स्रोत से शैली की नकल की) बनाया। मैं कुछ त्रुटियों को ठीक करने के लिए किया था:

  • BaseColorXX नहीं मिला -> एक पुराने AvalonDock संस्करण VS2010 विषय से प्रति
  • TargetType 'HwndHostInstance' तत्व की "प्रकार के साथ मेल नहीं LayoutAutoHideWindowControl -> बाहर एक्स के साथ शैली टिप्पणी : कुंजी = "{x: प्रकार avalonDockControls: LayoutAutoHideWindowControl}")
  • निकालें BasedOn="{Static Resource {x:Type MenuItem}}" (एक त्रुटि)
  • बदलें की नकल की छवियों के साथ अपने ही परियोजना पथ करने के लिए छवि रास्तों की वजह से

इसके बाद यह काम किया।

+0

क्या आपने [theme.xaml] (https://avalondock.codeplex.com/SourceControl/latest#Version2.0/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml) की प्रतिलिपि बनाई थी? मैंने इसे देखा है, और यह कई 'BaseColorXX' का उपयोग करता है जो [brushes.xaml] में भी मौजूद नहीं है (https://avalondock.codeplex.com/SourceControl/latest#Version2.0/Xceed.Wpf.AvalonDock .mes.Metro/Brushes.xaml), कैसे आते हैं? – JobaDiniz

+0

@JobaDiniz मैंने सब कुछ कॉपी करने की कोशिश की, Theme.xaml शामिल है। मुझे ब्रश.एक्सएएमएल में कुछ 'बेसकोलरॉक्स' परिभाषाएं जोड़नी पड़ीं। मैंने स्रोत से पुराने ब्रश.एक्सएमएल से इन्हें कॉपी किया। उदाहरण के लिए [यह] (https://avalondock.codeplex.com/SourceControl/changeset/89595#Version2.0/AvalonDock/AvalonDock.Theme.VS2010/Brushes.xaml) Brushes.xaml की पहली प्रतिबद्धता थी और इसमें सभी आवश्यक थे परिभाषाएँ। – fedab

+0

धन्यवाद, लेकिन आपने उनके मूल्य बदल दिए हैं, है ना? उदाहरण के लिए, 'बेसकॉलर 31' (आपके लिंक से) पीला है जो मेट्रो शैली में फिट नहीं है। – JobaDiniz

संबंधित मुद्दे