Это не похоже на проблему, которая является сложной, однако она не была хорошо описана. Не могли бы вы привести лучший пример?
Вы используете шаблон MVVM? Я бы предположил, что вы можете разбить представление на несколько представлений и моделей представлений, например, «CustomersListViewModel» и «CustomerDetailsViewModel».
Вы можете привязать ListBox к коллекции Customers и установить "SelectItem" для свойства с именем "SelectedCustomer" (в CustomersListViewModel), затем, когда выбор будет изменен в CustomersListBox, он запустит метод с именем "SelectedCustomerChanged" или что-то в этом роде. аналогичный, который по существу обновил бы «CustomersDetailsViewModel» (передавая выбранного клиента в качестве параметра), и это отобразило бы новый CustomerDetails.
Мне кажется, что у вас есть одно представление, которое меняет клиента, что грубо запускает событие selectionchanged в вашем поле со списком, вызывая вашу проблему. клиентов
Пример:
CustomersListViewModel
- Клиенты BindableCollection (с привязкой к ListBox)
- Customer SelectedCustomer (привязан к ListBox SelectedItem)
- CustomerDetailViewModel CustomerDetailViewModel (привязан к ContentControl)
- SelectedCustomerChanged (срабатывает при событии ListBox SelectionChanged)
CustomerDetailViewModel (принимает объект Customer в параметрах конструктора)
- Customer CurrentCustomer (привязать элементы управления к свойствам этого объекта Customer)
Метод "SelectedCustomerChanged" будет выглядеть примерно так...
public void SelectedCustomerChanged()
{
this.CustomerDetailViewModel = new CustomerDetailViewModel(this.SelectedCustomer)
// Replace this with some activation of view code?
this.ActivateViewModel(this.CustomerDetailViewModel)
}
Это был бы мой подход?
Спасибо, надеюсь, это поможет.
Бен
person
BenjaminPaul
schedule
26.11.2010