Настройка элемента в выпадающем списке в Silverlight - PullRequest
0 голосов
/ 25 марта 2011

У меня довольно простая задача, или я так подумал. У меня есть комбинированное окно в silverlight, которое содержит некоторые значения, такие как:

ComboBox hej = new ComboBox();
hej.Items.Add("blue");
hej.Items.Add("yellow");
hej.Items.Add("red");
hej.SelectedIndex = 0;

Если пользователь затем сохраняет свою работу, он может выбрать цвет, и он будет сохранен в виде строки в базе данных. Когда я возвращаюсь как пользователь и загружаю страницу, я хочу видеть цвет, который выбираю в последний раз.

Так вот, как я думаю, я мог бы решить проблему, но есть ли еще более простой способ, я все еще получаю некоторые ошибки с этим:

object hit;

hit = hej.Items.FirstOrDefault(item => ((string)item).StartsWith(
    ivTestXml.StatusColour, 
    StringComparison.CurrentCultureIgnoreCase));

if (hit != null)
{
    hej.SelectedItem = hit;
}

1 Ответ

0 голосов
/ 25 марта 2011

В Silverlight (и WPF) свойство SelectedItem не ожидает объект ListBoxItem, но возвращает и принимает само значение. Попробуйте просто:

hej.SelectedItem = ivTestXml.StatusColour;

вместо этого. Тем не менее, вы на самом деле не делаете эту задачу "Silverlight way". Я предполагаю, что вы из Windows Forms или ASP.NET. Silverlight предназначен для работы немного по-другому с этими технологиями. Вам лучше выполнять эту задачу, используя привязку, когда представление «тянет» данные к себе (как правило, из модели представления, используя шаблон проектирования MVVM), а не пытайтесь «протолкнуть» данные в представление из позади, как вы, кажется, делаете. Это требует серьезного сдвига ума и займет некоторое время, чтобы преодолеть этот барьер. Но как только вы это сделаете, это будет иметь смысл. Лучше всего иметь модель представления, которая предоставляет свойство ObservableCollection (для списка элементов) и строковое свойство для выбранного элемента. Затем поле со списком может связываться с этими свойствами.

Надеюсь, это поможет ...

Крис Андерсон

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...