如何在Windows Phone 8.1 RT中将颜色代码指定为资源?

时间:2016-03-09 07:59:07

标签: c# xaml windows-runtime windows-phone-8.1

我想创建一个资源文件,在这个文件中,我想分配一些颜色的值(在HEX字符串中)并在代码中使用它们。当我们已经拥有一个resource.resx文件并且只是在其上添加值时,在WP 8.0 silverlight上显然很容易。但在Windows Phone 8.1 RT中,我不知道该怎么做。请帮帮我!

P / s:为了说清楚,请在Android上举个例子,在那里我们可以创建一个color.xml文件,然后在xml代码中使用它,比如PrimaryColor或SecondaryColor,这是我的目的,仅适用于Windows Phone 8.1 RT。谢谢!

2 个答案:

答案 0 :(得分:1)

添加新的ResourceDictionary并在其中,您可以定义颜色:

<SolidColorBrush x:Key="MyColor">#3D3D3D"</SolidColorBrush>

然后您需要将其添加到App.xaml以使其可以全局访问:

 <Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Common/Resources.xaml"></ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

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

<Border x:Name="myBorder" Background="{StaticResource MyColor}">
</Border>

在C#中,您可以访问:

myBorder.Background = App.Current.Resources["MyColor"] as SolidColorBrush;

答案 1 :(得分:1)

创建一个XAML文件,ColorResource.xaml,根据您想要分配的位置和方式,可以使用

  • 颜色

ColorResource.xaml

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

    <SolidColorBrush x:Key="PrimaryColorBrush" Color="Transparent" />
    <Color x:Key="SecondaryColor">#FF00FF00</Color>

</ResourceDictionary>

包括您要使用它的词典:

<Page.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/ResourceDictionaries/ColorResource.xaml"/>

您通常只会使用画笔

<Border Background="{StaticResource PrimaryColorBrush}" BorderThickness="1">

仅在极少数情况下才会使用实际颜色

<ColorAnimation Duration="0" Storyboard.TargetName="myStory" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="{StaticResource SecondaryColor}"/>

希望这有帮助