Привязка данных к ComboBox WPF из ViewModel - невозможно изменить выбранный элемент - PullRequest
3 голосов
/ 18 сентября 2011

Я сразу уберу это с ума ... мой класс модели базового вида реализует INotifyPropertyChanged.Вот сценарий:

У меня есть одно представление с одной моделью представления.Представление является мастером / деталью, а мастером является список Game объектов, которые я заполняю без проблем.Когда в главном списке выбран объект Game, я хочу заполнить некоторые детали в различных элементах управления.Элемент управления, который вызывает у меня проблемы, - это поле со списком.

Теперь combobox заполняется с помощью коллекции Team объектов.Каждый Game объект имеет объект «Team», и после заполнения combobox я хочу выбрать соответствующий Team объект в combobox, который указывает объект Game.

ТеперьЯ знаю, что это работает в некоторой степени, потому что, если я делаю ту же привязку к textbox, появляется правильная информация (я могу заставить связанный объект Team появляться в textbox, но я не могу получитьэто выбрать из списка).

Я серьезно потерян, работаю над этим уже несколько часов.Кто-нибудь может помочь?

Редактировать: У меня такое ощущение, что это как-то связано со ссылками на объекты.Но не будет ли SelectedValue все еще работать?

1 Ответ

2 голосов
/ 18 сентября 2011

ViewModel:

    public ObservableCollection<Team> Teams
    {
        get { return this.teams; }
        set
        {
            this.teams = value;
            OnPorpertyChanged("Teams");
        }
    }

    public Team SelectedTeam
    {
        get { return this.selectedTeam; }
        set
        {
            this.selectedTeam = value;
            OnPorpertyChanged("SelectedTeam");
        }
    }

    private ObservableCollection<Team> teams;
    private Team selectedTeam;

Командный класс:

    public class Team
    {
        public string Name { get; set; }    
    }

Вид:

        <ComboBox DisplayMemberPath="Name"
              ItemsSource="{Binding Teams}" 
              SelectedItem="{Binding Mode=OneWayToSource, Path=SelectedTeam}" />
...