如何从页面中的App.xaml获取颜色值

时间:2013-11-24 16:28:06

标签: c# xaml windows-phone-7 windows-phone-8

我已经宣布了一种颜色,我将在我的应用程序中大量使用,我希望能够在页面中调用该特定颜色。这种颜色最有可能用于XAML以及后面的代码。在App.xaml中我有

<Color x:Name="Blue" A="255" R="35" G="85" B="145"/>

但是我如何在我的Page的UI和代码中调用它?

实际上要注意,上面在App.xaml中设置颜色会在启动时出现调试错误吗?

public App()
    {
        // Standard XAML initialization
        InitializeComponent(); //XamlParseException occurs here

        ...
    }

编辑**

SolidColorBrush更新无法正常工作

我在XAML中声明了Slider控件和两个ToggleSwitch控件,我希望在XAML中更改Slider前景并更改后面代码中的ToggleSwitch控件。两者都没有工作

的App.xaml

<Color x:Key="ThemeColorBlue" A="255" R="35" G="85" B="145"/>
<SolidColorBrush x:Key="ThemeBrushBlue" Color="{StaticResource ThemeColorBlue}"/>

所以当尝试在XAML中更改Slider控件前景时,使用

我没有错误
Foreground="{StaticResource ThemeBrushBlue}"

但在更改后面的代码中的ToggleSwitch前景时,我收到一条错误,指出Cannot implicitly convert type 'object' to 'System.Windows.Media.Brush'

this.ToggleSwitch.SwitchForeground = Application.Current.Resources["ThemeBrushBlue"];

2 个答案:

答案 0 :(得分:20)

您通常会使用Application.Resources而不是Key将颜色添加到Name

<Application.Resources>
    <Color x:Key="Blue" A="255" R="35" G="85" B="145"/>
</Application.Resources>

现在您可以在XAML中以StaticResource的形式访问它,例如:

<SolidColorBrush Color="{StaticResource Blue}"/>

或像这样的代码:

var color = (Color)Application.Current.Resources["Blue"];

答案 1 :(得分:-1)

我认为问题是

<SolidColorBrush x:Key="ThemeBrushBlue" Color="{StaticResource ThemeColorBlue}"/>

重复颜色,它应该有效:

<SolidColorBrush x:Key="ThemeBrushBlue" Color="#235591"/>