1

我在我的 project1 中创建了一个主题,并在 app.xaml 中引用了 theme.xaml。效果是所有项目在解决方案中都获得了相同的主题。

将 theme.xaml 应用于指定项目的最简单方法是什么,即仅应用于 project1 而不是 project2?

我知道我可以使用 project1 中的每个 WFP 表单中的 theme.xaml 引用

    <Window.Resources>
        <ResourceDictionary Source="/Project1;component/Themes/Customized.xaml" />
    </Window.Resources>

但是,如果我想更改项目的主题,这有点难以维护。我正在寻找的是类似于 project.xaml 的东西,其行为类似于 app.xaml,只是范围是当前项目。这样我就可以在一个地方为指定的项目(但不是其他项目)引用theme.xaml。

那可能吗?

提前致谢。

4

1 回答 1

1
  1. 创建一个项目主题资源字典并将引用FooTheme.xaml放入其中。

  2. 在项目的所有窗口中,引用ProjectTheme.xaml.

这样,为了改变项目的主题,你只需要修改一行。

代码:

FooTheme.xaml(示例主题)

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="Button">
        <Setter Property="Background" Value="Blue"/>
    </Style>
</ResourceDictionary>

ProjectTheme.xaml(项目主题)

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <!-- In order to modify the project's theme, change this line -->
        <ResourceDictionary Source="FooTheme.xaml"/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

MainWindow.xaml(示例项目窗口)

<Window x:Class="So17372811ProjectTheme.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="ProjectTheme.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
    <Grid>
        <Button Content="Click me!"/>
    </Grid>
</Window>
于 2013-06-29T06:30:45.297 回答