如何抑制用户控件的WPF全局应用主题?

时间:2012-02-15 16:47:58

标签: wpf xaml themes

整个 WPF应用程序 Expression Dark主题

<Application x:Uid="Application_1" x:Class="MyShow.Player.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml"
             SessionEnding="App_SessionEnding" >
    <Application.Resources>
        <ResourceDictionary x:Uid="ResourceDictionary_1"  >
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary x:Uid="ResourceDictionary_3" Source="/Themes/ExpressionDark.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

我所拥有的是这个表达式黑暗适用于所有用户控件(public partial class UControl : UserControl)。

我想要的是为所有WPF用户控件使用完全不同的主题,如Aero 或其他。

我怎么做?

谢谢!

1 个答案:

答案 0 :(得分:2)

创建一个Startup事件并在Startup事件处理程序中设置主题。该主题将应用于该解决方案中的所有用户控件。在你的情况下。

//App.xaml

<Application x:Uid="Application_1" x:Class="MyShow.Player.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml"
             SessionEnding="App_SessionEnding"
             Startup="Application_Startup">

//App.xaml.cs

private void Application_Startup(object sender, StartupEventArgs e)
        {
            StyleManager.ApplicationTheme = new MetroTheme(); //Set your theme           
        }