ResourceDictionary共享变量

时间:2015-10-21 14:39:08

标签: wpf xaml resourcedictionary

在我的ResourceDictionary Resource_Color 中,我定义了这一行:

    <Color x:Key="MainColor">Black</Color>

现在,我想在另一个资源文件中使用此 MainColor ,例如 Resource_DataGrid

        <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Foreground" Value="{StaticResource MainColor}" />

。 。 。 在这种模式下不起作用。 我怎么写这个声明?

1 个答案:

答案 0 :(得分:1)

使用ResourceDictionary.MergedDictionaries

<强> Window1.xaml

<Window x:Class="Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="Auto" Width="Auto">
  <Window.Resources>
    <ResourceDictionary Source="Dictionary2.xaml" />
  </Window.Resources>
  <Grid>
    <TextBox Text="TESTING" FontWeight="Bold" Margin="30" />
  </Grid>
</Window>

<强> Dictionary1.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Color x:Key="MainColor">Blue</Color>
  <SolidColorBrush x:Key="MainBrush" Color="{StaticResource MainColor}" />
</ResourceDictionary>

<强> Dictionary2.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Dictionary1.xaml" />
  </ResourceDictionary.MergedDictionaries>

  <Style TargetType="TextBox">
    <Setter Property="Foreground" Value="{StaticResource MainBrush}" />
  </Style>
</ResourceDictionary>

此外,Foreground属性通常是Brush,而不是Color。我的例子显示了它。