Контекстно-зависимый макет - изменение видимости набора инструментов WPF на основе комбинированного списка - PullRequest
0 голосов
/ 16 декабря 2009

У меня проблема с пользовательским интерфейсом при многоуровневом редактировании, когда требуется различный набор инструментов в зависимости от ComboBox, выбирающего слой, и я стараюсь использовать идиому. Инструменты не должны находиться в видимом контейнере.

Выбор ComboBox привязан к простому целочисленному свойству в ViewModel.

Альтернативы, которые я рассматривал, в основном основаны на серии StackPanel контейнеров в одном месте:

  1. Свяжите свойства видимости StackPanel s с различными свойствами ViewModel для каждого, затем рассчитайте эти свойства видимости на основе значения поддержки Combo. Мне нужно будет добавить несколько дополнительных уведомлений, чтобы они обновлялись при изменении Combo.
  2. Используйте ValueConverter для привязки StackPanel s 'свойств видимости непосредственно к комбинированному выбору
  3. Поместите StackPanel s в каждый из TabItem s в TabControl и подавьте любой рисунок заголовка, чтобы выбор TabControl мог быть сопоставлен непосредственно с выбором Combo.
  4. Используйте подкласс Selector или просто шаблонизатор Selector, чтобы получить поведение 3 без багажа из TabControl.
  5. Подход, который я сейчас использую, - добавил всплывающий обработчик Click, от которого должна зависеть их видимость, и просто установил видимость различных панелей в соответствии с SelectedIndex этого всплывающего окна. Очень старая школа, но простой и понятный код.

1 Ответ

1 голос
/ 16 декабря 2009

Я голосую за # 1. Я знаю, что пуристы WPF скажут, что это немного "старая школа", и есть более эффективные способы справиться с этим. Но иногда вам просто нужны некоторые базовые примеры старой функциональности, и KISS - лучший способ сделать это.

...