Visual Studio 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”,则它在运行时会正确呈现。这种不一致确实困扰着我,我无法弄清楚。\
So:
- 为什么 DynamicResource 不适用于 BorderBrush?
- 鉴于#1,为什么does它适用于背景吗?
- 为什么在资源中显式定义纯色画笔似乎可以解决问题?
EDIT:
看来这是微软决定不修复的一个错误(感谢Sheridan对于链接):http://connect.microsoft.com/VisualStudio/feedback/details/589898/wpf-border-borderbrush-does-not-see-changes-in-dynamic-resource
RadialGradientBrush 的情况似乎并非如此。
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.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}"/>
</Grid.Resources>
<Border BorderThickness="20">
<Border.BorderBrush>
<RadialGradientBrush>
<GradientStop Color="{DynamicResource BorderColor}"/>
<GradientStop Color="{DynamicResource BorderColor}"/>
</RadialGradientBrush>
</Border.BorderBrush>
<Border.Background>
<SolidColorBrush Color="{DynamicResource BackgroundColor}"/>
</Border.Background>
</Border>
<Border Margin="40" BorderBrush="{DynamicResource BorderColorBrush}" BorderThickness="20"/>
</Grid>
</Window>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)