2008-09-23 14 views
21

我希望我的WPF應用程序可以換膚,通過應用某個XAML模板,並將更改應用於應用程序範圍,即使對於甚至不在視覺/邏輯樹中的動態控件或控件。什麼是建議在WPF中整個應用程序皮膚的方法?

我可以使用什麼來完成這種類型的功能?有沒有任何好的資源或教程可以說明如何完成這個特定的任務?

回答

10

要採取的基本方法是全部通過應用程序使用資源並在運行時動態替換資源。

http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/的基本方法

+0

嗨莫里斯,這兩個鏈接現在都是404的。有找到替代品的機會嗎? – Matt 2015-06-23 20:12:25

+0

@Matt https://web.archive.org/web/20130411050848/http://www.codewrecks.com/blog/index.php/2008/05/22/simple-skinnable-and-theme-management-in -wpf-user-interface – Xcodo 2015-07-23 10:44:56

4

資源的更換工作,但我發現,「結構性換膚」更加強大!瞭解更多關於它在CodeProject ...

http://www.codeproject.com/KB/WPF/podder1.aspx

+0

一個古老的問題和答案,但是,除非我誤解了,似乎該頁面上暗示的方法也至少部分地依賴於動態資源引用。 – 2012-11-02 12:51:00

2

我發現申請通用模板所有控制,而無需使用模板鍵的方式。解決方案是使用控件的類型作爲Style鍵。

實施例:

<Application.Resources> 
    <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}"> 
     <Setter Property="Button.Background" Value="CornflowerBlue"/> 
     <Setter Property="Button.Template"> 
      <Setter.Value> 
       <ControlTemplate x:Name="MyTemplate"> 
        ... 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Application.Resources> 

這裏的樣式鍵爲x:鍵=「{x:Type按鈕}」,所以沒有控制聲明樣式屬性的樣式將被應用到類型按鈕的所有控制成爲一個靜態或動態資源。

相關問題