Добавление элементов в элемент управления с привязкой к данным в WPF - PullRequest
2 голосов
/ 16 июля 2009

У меня есть поле со списком, привязанное к базе данных ObservableCollection. Я хотел бы иметь выбранный по умолчанию элемент (Нет), который бы устанавливал значение свойства, привязанного к «SelectedValue», на ноль.

Я думаю, что должен быть способ достичь этого с некоторой комбинацией Style / DataTemplate / TemplateSelector. Я пытаюсь спроектировать это с учетом MVVM, поэтому я хотел бы что-то, что не использует codebehind и максимально возможно использовать повторно. Я также хотел бы, чтобы преимущества ObservableCollection (обновление коллекции приводило к повторному связыванию элемента управления) оставались неизменными.

Бонусная часть B: Я также хотел бы иметь возможность добавлять дополнительный визуальный элемент в нижней части ItemsControl, а также. Я думал, что было бы легко изменить DataTemplate, если бы я знал, как вызвать его на последнем элементе коллекции. Готов развлечь другие варианты здесь.

1 Ответ

1 голос
/ 16 июля 2009

Самый простой способ, который я нашел, это вставить «специальное» значение в базовую коллекцию и отобразить текст «(Нет)», когда он выбран. Очевидно, что тогда вам нужно запустить связывание через конвертер, чтобы принять это значение во внимание и вернуть null, когда оно выбрано. (См. мой вопрос , который был результатом того, что я пытался добавить фактическое нулевое значение в базовую коллекцию ComboBox.)

Сказав это, на самом деле можно сделать то, что вы хотите, с классом CompositeCollection . Вы можете создать отдельную коллекцию (только с одним элементом - вашим пустым элементом) и связать свой ComboBox с ним и с вашей исходной коллекцией через CompositeCollection.

...