Настройка выбранного элемента в списке в Silverlight - Windows Phone 7 - PullRequest
0 голосов
/ 24 ноября 2010

У меня есть Listbox с привязкой к данным, привязанный к общему списку следующим образом (Provider - очень простой класс, включающий только одно свойство (Name).

ProviderList = new List<Provider>();
//Populate list
Providers.ItemsSource = ProviderList;

Я могу сохранить выбранный элемент без проблемно мне не удается установить выбранный элемент из кода впоследствии. Я пытаюсь сделать это следующим образом:

int x = Providers.Items.IndexOf((Provider)_Settings["provider"]);

Однако IndexOf() всегда возвращает -1. Если я проверяю оба Providers.Items[1] и _Setting ["provider"] во время выполнения, используя непосредственное окно, они оба возвращают

{StoreRetrieveData.Provider}
Name: "Greenflag"

Я делаю что-то не так (ясно, что я)?

Ответы [ 3 ]

1 голос
/ 24 ноября 2010

Использование:

ListBox.Items
    .OfType<ColumnDescriptor>()
    .FirstOrDefault(c =>
        String.Equals(
            c.Name,
            ((Provider)_Settings["provider"]).Name,
            StringComparison.Ordinal));
1 голос
/ 22 декабря 2010

Возможно, вам придется перегружать Equals и оператор == вашего класса Provider, чтобы это работало.В противном случае ваше сравнение не удастся, если объекты разных экземпляров.Смотри http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx

1 голос
/ 24 ноября 2010

Есть ли вероятность, что вы сравниваете два разных объекта с одинаковым значением? Можете ли вы попробовать следующий код вместо:

Provider provider = (Provider)_Settings["provider"];
items.OfType<Provider>().Where(p => p.Name.Equals(provider.Name));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...