我想修改我的項目的默認控件模板。對於我的第一個更改,我只想爲每個主題中的listview的ScrollViewer建立一個名稱。如何修改默認控件主題?
這是我的結構: MyControlLibrary:定義了一對控件並定義了標準wpf控件的主題。 MyApplication:使用控制庫和包含的主題。
這是我到目前爲止所瞭解到的。 從以下主題下載默認主題:http://archive.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=wpfsamples&DownloadId=7812
將下載的主題添加到MyControlLibrary中的主題文件夾,添加了必要的引用,並修改了引用該程序集的xmlns:theme命名空間。
從這裏,我還沒有想出下一步該做什麼。如果只是覆蓋模板,這並不難,但我希望應用程序仍然是主題感知。
在此先感謝
編輯: 好吧,我發現這個解決方案。我希望這可以幫助別人。
更新您的App.xaml
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="{ThemeDictionary AssemblyName=AssemblyWithThemes}"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<!-- other styles go here -->
</Application.Resources>
其中AssemblyWithThemes是包含主題\文件夾中的主題文件集的名稱。我相信程序集也需要從您的應用程序中引用。
非常重要的是,如果直接在App.xaml文件中包含額外的資源,請將它們放置在註釋所在的位置,否則包含的ResourceDictionary將成爲另一個資源,而不是設置Application.Resources屬性。
然後,所有其他樣式都需要指定BasedOn屬性以保留主題更改。對於動態創建的窗口,我使用了新的Style(Type),並防止使用被覆蓋的主題。更改爲新的樣式(類型,樣式)後,它完美運行。
請將解決方案作爲答案發布在底部,而不是將其編輯到您的問題中,以便您可以標記答案。 – BoltClock 2012-03-19 20:13:46