Это не похоже на сложную проблему, однако она не была хорошо описана. Не могли бы вы привести лучший пример?
Используете ли вы шаблон 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