【发布时间】:2012-02-05 03:46:51
【问题描述】:
我打算为MapPolygon 创建一个Style,但除了从Control 继承的属性之外,我似乎无法添加Setter,这并没有太大帮助,因为MapPolygon 实际上并没有使用其中的许多属性。
我主要希望能够设置Fill、Stroke 和StrokeThickness 属性的样式。但是,当我尝试执行此操作时,我收到以下错误:“对象引用未设置为对象的实例”。我是否认为这是因为我尝试设置样式的属性不是依赖属性 (DependencyProperty)?
如果我在这里的想法确实是正确的,那么解决这个问题的最简单方法是创建自定义MapPolygon 控件并为Fill、Stroke 和StrokeThickness 创建依赖属性吗?
如果我需要澄清一些事情,请告诉我。
更新:
public class StyledMapPolygon : MapPolygon {
public static readonly DependencyProperty FillProperty =
DependencyProperty.Register("Fill", typeof(Brush), typeof(StyledMapPolygon),
new PropertyMetadata(new SolidColorBrush(), new PropertyChangedCallback(OnFillChanged)));
private static void OnFillChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
StyledMapPolygon instance = (StyledMapPolygon) d;
instance.Fill = e.NewValue as Brush;
}
}
.
<Style x:Key="CustomStyle" TargetType="exts:StyledMapPolygon">
<Setter Property="Fill" Value="{StaticResource BuildingFillBrush}" />
</Style>
这只是我想使用的样式的简化版本。 StyledMapPolygon 是我创建的继承自 MapPolygon 的对象。唯一的区别是我为“填充”创建了一个 DependencyProperty,它只映射到基本属性。
上面提到的错误仍然出现在Setter 中的“填充”上,但它现在可以正常工作(在手机上正确显示)。我可以忍受那里的错误,因为它仍然运行,但我非常希望我的应用程序没有错误。
【问题讨论】:
-
显示您的代码(尤其是导致异常的行),而不仅仅是描述它。
-
我用我已经取得的进展更新了这个问题。 @Matt - 我的代码并不那么重要。我只想知道如何从
Style正确设置MapPolygon的Fill 属性。 -
所以你说的是“我该怎么做 X?”。如果你可以说“我正在尝试做 X。我正在做......但我有这样那样的问题/例外。”,你会得到更多的帮助。
-
在大多数情况下我会同意,但这个问题似乎很简单和笼统,以至于提供代码会更令人困惑而不是有用。但是,我还是用代码更新了这个问题。
标签: silverlight windows-phone-7 bing-maps