Как связать со списком поиска? - PullRequest
0 голосов
/ 05 мая 2011

В раскрывающемся списке со списком WPF4 неправильно отображается имя класса моего объекта EF4.Вот соответствующий XAML:

<Window.Resources>
    <CollectionViewSource x:Key="myEntitiesViewSource"/>
</Window.Resources>

<ComboBox ItemsSource="{Binding Source={StaticResource myEntitiesViewSource}}" DisplayMemberPath="CategoryDescription" SelectedValuePath="CategoryID" />

Вот код в моем событии Window_Loaded:

var categoryList = from p in _context.Categories
                  orderby p.CategoryNumber
                  select p;

System.Windows.Data.CollectionViewSource myEntitiesViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("myEntitiesViewSource")));
// Load data by setting the CollectionViewSource.Source property:
myEntitiesViewSource.Source = categoryList;

Моя база данных имеет много-много взаимосвязей между проектами и категориями с таблицей соединений, которая называетсяProjectCategories.Сущность Categories была автоматически создана как единая сущность для представления двух таблиц базы данных:

1) таблица поиска категорий, содержащая ID, CategoryDescription и CategoryNumber и

2) таблица соединения ProjectCategories содержит только два поля - идентификаторы из таблиц Projects и Categories.Модель сущностей находится в отдельном проекте от моего окна WPF.

Моя цель - позволить пользователю выбрать описание категории из выпадающего списка, а затем нажать кнопку Добавить категорию, чтобы добавить выбранную категорию в отдельный список.ProjectCategories.С текущим кодом я вижу правильное CategoryDescription в текстовой области комбинированного списка, но раскрывающийся список отображает только имя класса сущности Categories (которому предшествует его пространство имен) несколько раз!

Как мне сделать этот простой поискCombobox связать правильно и отобразить список CategoryDescription и SelectedValue CategoryID? Примечание: я бы принял подход только с кодом, исключая CollectionViewSource в XAML, если это возможно.

Спасибо!

Ответы [ 2 ]

1 голос
/ 17 мая 2011

Nevermind.Я задал этот вопрос и ответил на него сам.Там не было ничего плохого с моим кодом или XAML. Проблема была вызвана использованием сторонней темы для стилизации моих элементов управления.Как только я удалил тему, проблема со связыванием со списком исчезла.Для более подробной информации см. Этот пост .

0 голосов
/ 05 мая 2011

А что-то вроде этого?

<ComboBox  ItemsSource="{Binding Categories}" 
           SelectedItem="{Binding Category}" DisplayMemberPath="Description" />

Вместо того, чтобы использовать выбранное значение, я бы сохранил весь объект.Мой подход к выбору значений - это старый стиль ASP.

SelectedItem="{Binding Category}" - это объект вашей категории.В основном он сохранил выбранный элемент ComboBox.

Когда пользователь нажимает, например, кнопку, вы можете запустить команду из ViewModel, и у вас будет соответствующий выбранный объект категории.

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