我正在使用针对Silverlight的Bing贴图API,并且如果针脚名称不等于代码中其他位置的值,则需要在地图上循环选择图钉并执行一些格式化。
这是功能:
private void deselectAllPins(MapLayer mainMapLayer)
{
foreach (UIElement ui in mainMapLayer.Children)
if (ui is SitePushpin)
{
SolidColorBrush scb = new SolidColorBrush(Colors.Red);
if (ui.GetValue(SitePushpin.SiteName).ToString() != hiddenShortName.Text)
{
....formatting
}
}
}
'SitePushpin'声明为:
public class SitePushpin : Pushpin
{
public string SiteName { get; set; }
public SitePushpin(Color Bg)
{
this.Name = Guid.NewGuid().ToString();
SolidColorBrush scb = new SolidColorBrush(Bg);
this.Background = scb;
}
}
我的问题出现在带有ui.GetValue的if语句中。它无法看到SiteName属性并出现错误
“非静止字段需要对象引用”
我有什么想法可以让它看到这个价值?
非常感谢 帽
答案 0 :(得分:1)
属性SiteName
是一个实例属性,而不是type/static
,因此您应该拥有SitePushpin
类的实例,然后访问SiteName
属性。
SO
var pushpin = ui as SitePushpin;
if (pushpin != null)
{
SolidColorBrush scb = new SolidColorBrush(Colors.Red);
if (ui.GetValue(pushpin.SiteName).ToString() != hiddenShortName.Text)
{
....formatting
}
}
答案 1 :(得分:-2)
改变这个:
if (ui.GetValue(SitePushpin.SiteName).ToString()
到此:
if (ui.GetValue(ui.SiteName).ToString()
甚至是这样:
if (ui.SiteName != hiddenShortName.Text)