2013-07-25 43 views
0

我對WPF項目較新,並且對組件MahApps.Metro有疑問。 我在我的項目中創建了一個MainWindow和其他窗口,我的問題是:如何在MainWindow中將相同的主題應用於項目的其他窗口?而且,我必須將ResourceDictionary應用於所有窗口,或者以任何方式僅以一次的方式執行此操作?如何使用MahApps.Metro在所有WPF窗口中應用相同的主題

謝謝你們!

回答

1

在你App.xaml,設置ResourceDictionary屬性是這樣的:

<Application.Resources> 
    <ResourceDictionary Source="MyResourceDictionary.xaml"/> 
</Application.Resources> 

注意,爲了讓您的資源字典的樣式被應用到該類型的所有控件的樣式應該不會有鍵。例如,風格定義是這樣的:

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Content" Value="This is the default button text"/> 
</Style> 

ResourceDictionary將導致該項目所有的按鈕,當您創建它們有一個默認值。

1

WPF中的資源基於其可用的「範圍」工作。 Check this article for a detailed explanation

現在Application(App.xaml)在Window的較高範圍內。因此,要在您的Window共享這些MahApps控制資源的只是移動ResourceDictionary年代到Application.Resources範圍

類似:

<Application.Resources> 
    <ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colours.xaml" /> 
     <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
     <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
     <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" /> 
     <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

現在你不再需要在每個窗口作爲添加這些字典的他們可以隱式提供

+0

我完全是這樣,但沒有工作。一些控件,如選項卡控件不能很好地工作。 – evsar3

+0

@EvandroAraújo只是一個例子。只要你把你在'Window'範圍內使用的** MahaApps資源移動到Application範圍,就可以了。如果沒有將產生問題的樣本放在一起,並且可能將其附加到您的問題上,則很難說沒有看到任何代碼就會發生什麼。 – Viv

+0

謝謝您的及時答覆,但是,我想我並沒有完全解釋我想要的。所以,無論如何,我會找到一種方法去做我想做的事。謝謝。 – evsar3

相關問題