【发布时间】:2013-10-27 13:38:53
【问题描述】:
我正在尝试用settings.settings 的值填充rectangle。但它会引发 NullReference 错误。当我使用 MessageBox 显示设置时,它不是空的。 NullRefference exception 由 Rectangle 触发
var rect = btnBackground.Template.FindName("rectBackground", btnBackground) as Rectangle;
rect.Fill = new SolidColorBrush((Color)ColorConverter.ConvertFromString((PawnStar.Properties.Settings.Default.colorBG))); // PawnStar.Properties.Settings.Default.colorBG
colorBG = (Color)ColorConverter.ConvertFromString((PawnStar.Properties.Settings.Default.colorBG));
WPF:
<Button Click="btnBackground_Click" Grid.Row="0" Grid.Column="1" Name="btnBackground">
<Button.Template>
<ControlTemplate>
<Rectangle Name="rectBackground" Stroke="Black" Fill="#FFFFFF"></Rectangle>
</ControlTemplate>
</Button.Template>
</Button>
当我创建一个新的 Rectangle 对象时,我不能再改变颜色了。
【问题讨论】:
-
第一个代码sn-p放在哪里?
-
在 Window_Loaded 中。但即使我将它放在 TabControl 的 SelectionChanged 事件中,它也会崩溃
-
colorBG的值是多少?您确定使用正确/可转换的颜色字符串值正确存储它吗? -
你不能在
RectangleFill上使用TemplateBinding来使用Button的Backgound吗?然后更新 Button 的Background会更容易,这反过来会更新 Rectangle 的Fill。 -
TemplateBinding<Rectangle Fill="{TemplateBinding Background}" Name="rectBackground" Stroke="Black" />的正确方法
标签: c# wpf colors nullreferenceexception rectangles