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

Mat*_*hew 4 c# xaml windows-phone-7 windows-phone-8

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

<Color x:Name="Blue" A="255" R="35" G="85" B="145"/>
Run Code Online (Sandbox Code Playgroud)

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

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

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

        ...
    }
Run Code Online (Sandbox Code Playgroud)

编辑**

SolidColorBrush更新无法正常工作

我有一个Slider控件和两个在XAML中声明的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}"/>
Run Code Online (Sandbox Code Playgroud)

因此,当尝试在XAML中更改Slider控件前景时,我没有使用错误

Foreground="{StaticResource ThemeBrushBlue}"
Run Code Online (Sandbox Code Playgroud)

但是当在后面的代码中更改ToggleSwitch前景时,我得到一个错误说明 Cannot implicitly convert type 'object' to 'System.Windows.Media.Brush'

this.ToggleSwitch.SwitchForeground = Application.Current.Resources["ThemeBrushBlue"];
Run Code Online (Sandbox Code Playgroud)

Cle*_*ens 22

您通常会将颜色添加到Application.Resourcesa Key而不是Name:

<Application.Resources>
    <Color x:Key="Blue" A="255" R="35" G="85" B="145"/>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

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

<SolidColorBrush Color="{StaticResource Blue}"/>
Run Code Online (Sandbox Code Playgroud)

或者像这样的代码:

var color = (Color)Application.Current.Resources["Blue"];
Run Code Online (Sandbox Code Playgroud)

  • 错误消息*无法将类型'object'隐式转换为'System.Windows.Media.Brush'*说明了一切.表达式`Application.Current.Resources ["ThemeBrushBlue"]`返回一个`object`,但`ToggleSwitch.SwitchForeground`需要一个`Brush`.你必须添加一个显式的强制转换(正如我在答案中所做的那样):`ToggleSwitch.SwitchForeground =(Brush)Application.Current.Resources ["ThemeBrushBlue"];` (2认同)

Igo*_*man 2

我认为问题是

<SolidColorBrush x:Key="ThemeBrushBlue" Color="{StaticResource ThemeColorBlue}"/>
Run Code Online (Sandbox Code Playgroud)

只需重复颜色即可:

<SolidColorBrush x:Key="ThemeBrushBlue" Color="#235591"/>
Run Code Online (Sandbox Code Playgroud)