WPF Combobox SelectionChanged запись привязки - PullRequest
1 голос
/ 24 ноября 2010

В моем xaml слева есть ListBox of Customers.Когда клиент выбран, справа будет отображаться информация о клиенте (имя, адрес, телефон, тип и т. Д.) В текстовое поле связывания или комбинированный список.

Справа тип - это комбинированный список, у которого есть событие SelectionChanged, которое заполняет что-то при изменении значения.Проблема заключается в том, что всякий раз, когда я выбираю другого клиента в ListBox слева, событие Type SelectionChanged также запускается и заполняет значение.Как я могу обнаружить и предотвратить это?спасибо!

1 Ответ

0 голосов
/ 26 ноября 2010

Это не похоже на сложную проблему, однако она не была хорошо описана. Не могли бы вы привести лучший пример?

Используете ли вы шаблон MVVM? Я полагаю, что вы можете разбить представление на несколько моделей Views и View, например «CustomersListViewModel» и «CustomerDetailsViewModel».

Вы можете привязать ListBox к коллекции Customers и установить для «SelectItem» свойство с именем «SelectedCustomer» (в CustomersListViewModel), затем при изменении выбора в CustomersListBox будет запущен метод с именем «SelectedCustomerChanged». "или что-то подобное, что по существу привело бы к созданию" CustomersDetailsViewModel "(передача выбранного клиента в качестве параметра), и это отобразило бы новый CustomerDetails.

Мне кажется, что у вас есть единственное представление, которое вытесняет клиента, что может привести к возникновению проблемы с измененным выбором в вашем поле со списком, что вызовет вашу проблему. Клиентов

Пример:

CustomersListViewModel

  • Клиенты BindableCollection (привязаны к ListBox)
  • Клиент, выбранный клиентом (привязан к элементу списка, выбранному)
  • CustomerDetailViewModel CustomerDetailViewModel (привязан к ContentControl)
  • SelectedCustomerChanged (запускается по событию ListBox SelectionChanged)

CustomerDetailViewModel (Принимает объект Customer в параметрах конструктора)

  • Customer CurrentCustomer (Bind контролирует свойства на этом Объект заказчика)

Метод SelectedCustomerChanged будет выглядеть примерно так ...

public void SelectedCustomerChanged()
{
   this.CustomerDetailViewModel = new CustomerDetailViewModel(this.SelectedCustomer)
   // Replace this with some activation of view code?
   this.ActivateViewModel(this.CustomerDetailViewModel)
}

Это был бы мой подход?

Спасибо, надеюсь, это поможет.

Ben

...