2013-08-21 92 views
0

我在WPF項目中使用MahApps.Metro。但是我沒有使用nuget包,而是下載了源代碼並將其作爲項目添加到我的解決方案中(出於某些原因)。如你所知,它有一個默認主題,用於所有的控件。現在,我試圖在我的項目中更改MetroWindow的默認值。我不想改變原來的項目。所以我創建了一個新的ResourceDictionary,我在這方面的風格。我試圖改變MetroWindow默認他們,但似乎沒有x:Key屬性是不可能的。我的意思是我嘗試這樣做:覆蓋WPF UserControl默認主題

<Style TargetType="{x:Type metro:MetroWindow}"> 
    <!-- My styles and templates gone here... --> 
</Style> 

和這一個了:

<Style x:Key="{x:Type metro:MetroWindow}" TargetType="{x:Type metro:MetroWindow}"> 
    <!-- My styles and templates gone here... --> 
</Style> 

但沒有他們,就控制和控制仍然使用由MahApps.Metro定義的默認主題效果。我錯過了什麼?任何想法?它甚至有可能嗎?

回答

0

我也試過一樣,但事實證明,這是不可能改變窗口樣式。你能做到的唯一方法是通過rolling your own window

至於控件,您可以通過使用如改變風格:

<Style TargetType="Button" BasedOn="{StaticResource MetroButton}"> 
    <!-- your changes here --> 
</Style> 
0

另一種方式來做到這一點是創建自己的主題。

  1. 從Mahapps複製BaseLight.xaml或BaseDark.xaml文件的內容並將其粘貼到新的主題文件中。
  2. 覆蓋在應用程序啓動主題

    protected override void OnStartup(StartupEventArgs e) 
    { 
        base.OnStartup(e); 
    
        // Add and apply style 
        ThemeManager.AddAccent("CustomAccent", new Uri("pack://application:,,,/Custom.Style;component/CustomAccent.xaml")); 
        ThemeManager.AddAppTheme("CustomTheme", new Uri("pack://application:,,,/Customo.Style;component/CustomTheme.xaml")); 
        ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("CustomAccent"), ThemeManager.GetAppTheme("CustomTheme")); 
    } 
    
  3. 改變所有MetroWindow例如背景顏色,改變的關鍵值「WhiteColor」