Nano Hash - криптовалюты, майнинг, программирование

Данные, связывающие ComboBox WPF с ViewModel, не могут изменить выбранный элемент

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

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

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

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

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

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

17.09.2011

Ответы:


1

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}" />
18.09.2011
  • Приведенный выше пример - это то, что у меня сейчас есть, и оно не работает. Проблема заключается в том, что когда представление загружается, в модели представления уже есть команда, назначенная выбранной команде, и выбранная команда не отображается в поле со списком при загрузке. Что я могу сделать? Когда я выбираю команду из поля со списком, новое значение команды применяется к модели представления, но оно не загружает существующее выбранное значение при загрузке представления. 27.09.2011
  • Я должен сказать, что выбранная команда не ВЫБРАНА в поле со списком (в поле со списком нет видимого элемента, выбранного в интерфейсе, оно пустое, но объект, к которому он привязан, имеет значение) 27.09.2011
  • @ Басти, ты в конце концов заставил это работать? У меня аналогичная ситуация. Спасибо. 04.12.2012
  • Когда ComobBox загружается, он выполняет контрольное сопоставление, а не сопоставление на равенство, чтобы найти точный экземпляр Team в коллекции Teams. Проблема, с которой вы можете столкнуться, заключается в том, что экземпляр Team, назначенный SelectedItem, не является экземпляром Team, существующим в вашей коллекции Teams. Вам либо понадобится некоторый код в вашем представлении или модели представления, который соответствует им, либо вам потребуется выполнить привязку к уникальному свойству Team (например, ID), чтобы ComboBox мог выполнить правильный поиск. 20.11.2013
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..