【问题标题】:Why are colors/brushes not shown when using ResourceDictionary?为什么使用 ResourceDictionary 时不显示颜色/画笔?
【发布时间】:2020-01-26 18:21:48
【问题描述】:

我的程序中有一些应用程序范围的资源:

<Application.Resources>
    <ResourceDictionary>

        <!--Colors-->
        <Color x:Key="PaleRed" R="255" G="127" B="127" />
        <Color x:Key="PaleGreen" R="222" G="255" B="209" />
        <Color x:Key="PaleBlue" R="112" G="200" B="255" />
        <Color x:Key="LightGray" R="155" G="155" B="155" />
        <Color x:Key="DarkGray" R="100" G="100" B="100" />

    </ResourceDictionary>
</Application.Resources>

在我的 ViewModel 中,我得到了背景

public Brush Background
    {
        get
        {
            Color paleRed = (Color)Application.Current.Resources["PaleRed"];
            Color paleGreen = (Color)Application.Current.Resources["PaleGreen"];
            Color paleBlue = (Color)Application.Current.Resources["PaleBlue"];
            Color lightGray = (Color)Application.Current.Resources["LightGray"]; 

            #region comment
            paleRed = Color.FromRgb(255, 127, 127);
            paleGreen = Color.FromRgb(222, 255, 209);
            paleBlue = Color.FromRgb(112, 200, 255);
            lightGray= Color.FromRgb(112, 112, 112);
            #endregion

            if (ComponentType == ComponentType.test)
            {
                return new SolidColorBrush(paleBlue);
            }

            var color = Percentage > 0.0 ? paleGreen : paleRed;
            Brush solidBack = new SolidColorBrush(color);
            Brush gradientBack = new LinearGradientBrush(lightGray, color, 0);

            return Amount-AmountSold > 0 ? solidBack : gradientBack;
        }
    }

当像上面的例子一样设置背景时(区域未注释),它以正确的方式显示颜色。如果我评论重新分配,则不会显示颜色(仅显示白色背景)。但是当我设置一个带有注释区域的断点时,颜色(和画笔)不为空并且具有正确的 ARGB 值。

谁能告诉我为什么会这样?

【问题讨论】:

    标签: c# wpf xaml colors


    【解决方案1】:

    您定义颜色的方式,您还需要提供 A。

    EG:

        <Application.Resources>
            <ResourceDictionary>
                <!--Colors-->
                <Color x:Key="PaleRed" R="255" G="127" B="127" A="255" />
                <Color x:Key="PaleGreen" R="222" G="255" B="209" />
                <Color x:Key="PaleBlue" R="112" G="200" B="255" />
                <Color x:Key="LightGray" R="155" G="155" B="155" />
                <Color x:Key="DarkGray" R="100" G="100" B="100" />
                <SolidColorBrush x:Key="PaleRedBrush" Color="{StaticResource PaleRed}"/>
            </ResourceDictionary>
        </Application.Resources>
    

    将我的主窗口的背景设置为 PaleRedBrush

    <Grid Background="{StaticResource PaleRedBrush}">
    

    有效

    如果我删除那个 A 设置或使用不同的颜色,那么它就是白色 - 我的窗口的背景。

    【讨论】:

    • 非常感谢。我认为 alpha 与不透明度相同,而不是相反 :)
    猜你喜欢
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 2011-08-04
    • 1970-01-01
    • 2011-11-17
    • 2017-09-16
    相关资源
    最近更新 更多