использование uielement.GetValue (), ошибка «ссылка на объект обязательна для нестатического поля» - PullRequest
1 голос
/ 19 июля 2011

Я использую API карт Bing для Silverlight, и мне нужно циклически переключаться между выбранными кнопками на карте и выполнять некоторое форматирование, если имя контактов не равно значению в другом месте кода.

Вот функция:

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

Моя проблема возникает в операторе if с помощью ui.GetValue.Он не может видеть атрибут SiteName и выдает ошибку

"ссылка на объект обязательна для нестатического поля"

Любые идеи, как я могу его получитьчтобы увидеть это значение?

Большое спасибо Cap

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Свойство 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                 
     } 
}
0 голосов
/ 19 июля 2011

Изменить это:

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

к этому:

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

или даже это:

if (ui.SiteName != hiddenShortName.Text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...