为什么使用资源词典时不显示颜色/画笔?



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

<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>

在我的视图模型中,我得到了背景

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 值。

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

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

例如:

<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>

将我的主窗口的背景设置为苍白的红画笔

<Grid Background="{StaticResource PaleRedBrush}">

那行得通

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

最新更新