视觉工作室 2010 | .NET/WPF 4.0
我认为这可能是一个 WPF 错误,但我似乎找不到关于它的错误报告。为了弥补我只是错过了一些明显的东西的可能性,我转向 stackoverflow 寻求答案!
考虑这个 xaml(代码隐藏中没有任何内容):
<Window x:Class="DownExpanders.BorderTest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BorderTest" Height="300" Width="300">
<Window.Resources>
<Color x:Key="BackgroundColor" R="255" G="0" B="0" A="255"/>
<Color x:Key="BorderColor" R="0" G="0" B="255" A="255"/>
<SolidColorBrush x:Key="BorderColorBrush" Color="{DynamicResource BorderColor}"/>
</Window.Resources>
<Grid>
<Border BorderThickness="20">
<Border.Background>
<SolidColorBrush Color="{DynamicResource BackgroundColor}"/>
</Border.Background>
<Border.BorderBrush>
<SolidColorBrush Color="{DynamicResource BorderColor}"/>
</Border.BorderBrush>
</Border>
<Border Margin="40" BorderBrush="{DynamicResource BorderColorBrush}" BorderThickness="20"/>
</Grid>
</Window>
在设计器中,它按预期呈现。外边框有一个大的蓝色边框和一个红色背景,内边框有一个大的蓝色边框。伟大的。
当我运行代码时,外边框没有边框 - 看起来它只是没有加载。背景正确设置为红色。同时,内边框确实正确加载了它的蓝色边框。
如果我将所有“DynamicResource”更改为“StaticResource”,它会在运行时正确呈现。这种不一致确实困扰着我,我无法弄清楚。\
所以:
- 为什么 DynamicResource 不适用于 BorderBrush?
- 鉴于#1,为什么它适用于背景?
- 为什么在资源中明确定义纯色画笔似乎可以解决问题?
编辑:
看起来这是 MS 决定不修复的错误(感谢Sheridan的链接):http ://connect.microsoft.com/VisualStudio/feedback/details/589898/wpf-border-borderbrush-does-not-see-动态资源的变化