2010-11-24 2 views
1

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

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

ответ

0

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

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

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

Это звучит так, как будто у вас есть один вид, который заменяет клиента, который будет грубым огнем в событии selectedchanged на вашем поле со списком, что вызовет вашу проблему. Тион Клиентов

Пример:

CustomersListViewModel

  • BindableCollection Клиенты (Связанные с ListBox)
  • SelectedCustomer клиента (Bound в ListBox SelectedItem)
  • CustomerDetailViewModel CustomerDetailViewModel (Bound к ContentControl)
  • SelectedCustomerChanged (Уволенный на ListBox SelectionChanged Event)

CustomerDetailViewModel (Принимает объект клиента в конструктор Params)

  • 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

+0

Привет, Бен, я не использую шаблон MVVM. Это приложение WPF, использующее EF для данных. Я загружаю Listbox с помощью клиентов. Когда клиент выбран, Windows DataContext устанавливается в SelectedItem.Я считаю, что событие ComboBox SelectionChanged активировалось, потому что Type изменяется каждый раз, когда выбран новый клиент. Мне нужно знать, как предотвратить выполнение ComboBox SelectionChanged, когда изменение не происходит непосредственно из списка выпадающего списка ComboBox. – Seecott 2010-11-26 19:52:23

Смежные вопросы