18

我有一个列出一组颜色的 styles.xaml 文件。这些颜色定义了应用程序某个部分中的某些元素如何显示,因此可以通过转换器使用。

我想在应用程序的另一部分创建这些颜色的图例,并有一个切换按钮列表,我想将背景颜色设置为 styles.xaml 中定义的颜色。

我是否需要以某种方式将styles.xaml 文件包含到定义切换按钮的xaml 文件中?或者有什么方法可以直接绑定到这些颜色值?

4

2 回答 2

34

将 styles.xaml 添加到 App.xaml

 <Application.Resources>
    <ResourceDictionary >
        <ResourceDictionary.MergedDictionaries >       
            <ResourceDictionary Source="styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
于 2013-01-11T15:20:55.970 回答
4

注意以下内容/答案的归属应转到@Chris Schaller。此答案的内容最初是作为对@chameleon86答案的编辑发布的,但被拒绝(另请参阅元数据)。但是我认为,这是一些有价值的内容,所以我正在“转发”它。

要使 styles.xaml 中的定义可用于应用内的所有 XAML,请将 styles.xaml 添加到 App.xaml

<Application.Resources>
   <ResourceDictionary >
        <ResourceDictionary.MergedDictionaries >  
            <ResourceDictionary Source="styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
        <!-- You can declare additional resources before or after Merged dictionaries, but not both -->
        <SolidColorBrush x:Key="DefaultBackgroundColorBrush" Color="Cornsilk" />
        <Style x:Key="DefaultBackgroundColor" TargetType="TextBox">
            <Setter Property="Background" Value="{StaticResource DefaultBackgroundColorBrush}" />
        </Style>
    </ResourceDictionary>
</Application.Resources>

要了解这是如何工作的,在运行时,您的窗口、页面或控件将作为正在运行的应用程序可视树的子元素存在。

您最初的问题指出:

“这些颜色定义了应用程序某一部分中的某些元素如何......”

如果您只需要这些样式资源可用于某些xaml 页面或窗口,而不是全部,那么您仍然可以使用此模式来合并窗口的本地资源,或者直接用于网格或其他控件。

  • 请注意,这样做会使这些样式仅可用于您声明资源字典的元素的子元素。

看看将样式引用限定为单个网格以供使用是多么简单:

<Grid>
    <Grid.Resources>
        <ResourceDictionary >
            <ResourceDictionary.MergedDictionaries >       
                <ResourceDictionary Source="styles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
            <!-- You can declare additional resources before or after Merged dictionaries, but not both -->
        </ResourceDictionary>
    </Grid.Resources>
    <!--
        Grid Content :)
      -->
</Grid>
于 2016-04-14T06:54:06.543 回答