2011-07-19 16 views
1

私はSilverlight用のBingマップAPIを使用しており、マップ上で選択したプッシュピンを循環させて、ピン名はコード内の他の値と等しくありません。ここでuielement.GetValue()を使用すると、エラー "非静的フィールドにオブジェクト参照が必要です"

は、関数である: 'SitePushpinは' と宣言されている

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 
       } 
      } 
    } 

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文ででてきます。これは、サイト名の属性を参照することができず、エラー

を思い付く「オブジェクト参照が非静的フィールドのために必要とされる」

私はそれがこの値を見ることができますどのように任意のアイデア?

感謝 キャップ

+0

それはあなたのように見えますプロパティーアクセスに変数名を使用しています。それは正しいのですか、Dependency PropertyによってSiteNameという名前のプロパティにアクセスすることを意味しましたか?下の「答え」はコンパイルされるかもしれません(SiteNameがDPではないことはわかりませんが)実際のコードは私には意味がありません。まったく明確にすることはできますか?上 –

答えて

1

プロパティSiteNameので、あなたがSitePushpinクラスのインスタンスを持つ必要があり、その後、SiteNameプロパティにアクセスし、インスタンスプロパティではなく、type/staticです。

SO

var pushpin = ui as SitePushpin; 
if (pushpin != null) 
{ 
    SolidColorBrush scb = new SolidColorBrush(Colors.Red); 
    if (ui.GetValue(pushpin.SiteName).ToString() != hiddenShortName.Text)         
    { 
     ....formatting     
    } 
} 
+0

スポット、ありがとう:) – Captastic

+0

@Captastic:歓声を;) – sll

-2

変更この:

if (ui.GetValue(ui.SiteName).ToString() 

かさえ、この:これに

if (ui.GetValue(SitePushpin.SiteName).ToString() 

if (ui.SiteName != hiddenShortName.Text) 
+0

UIがUIElementのタイプである(UI)がSitePushpinであれば – sll

+0

'' – MusiGenesis

+0

それだけでオブジェクトが特定の型であるかどうかを確認するが、それをキャストしません – sll

関連する問題