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