2012-04-01 4 views
0

Мне нужна небольшая помощь в создании дизайна, который я хочу.
My ViewModel имеет три коллекции, которые связаны с тремя ItemsControl с использованием Caliburn.Micro. Каждая коллекция содержит от 10 до 31 предмета.
Я хочу поставить каждый ItemControl в Expander. До сих пор, так просто:.Дизайн с несколькими расширителями

<StackPanel> 
    <Expander IsExpanded="True" Header="Day recordings"> 
    <ItemsControl Name="DayRecordings" /> 
    </Expander> 
    <Expander IsExpanded="False" Header="Month recordings"> 
    <ItemsControl Name="MonthRecordings" /> 
    </Expander> 
    <Expander IsExpanded="False" Header="Digit recordings"> 
    <ItemsControl Name="DigitRecordings" /> 
    </Expander> 
</StackPanel> 

Сейчас проблема заключается в том, что они расширяются за пределы StackPanel они содержатся в
Я хотел бы, чтобы Expander с, чтобы вести себя так:

  1. Если расширен только один Expander, он должен использовать полное пространство StackPanel минус пространство, необходимое для другого, нерасширенного Expander. В расширенном Expander должна быть показана вертикальная стрелка ScrollBar.
  2. Если расширение N Expander s, каждое должно занимать 1/Nth общей площади StackPanel минус пространство, необходимое для другого, нерасширенного Expander s. В каждом из расширенных Expander s должен быть показан вертикальный ScrollBar.
    1. Если одному из расширенных Expander s требуется меньше места, чем назначенный 1/Nth, он должен использовать только необходимое пространство, а избыточное пространство должно равномерно распределяться по другому расширенному Expander. Такое поведение хорошо бы иметь, но не обязательно

К сожалению, у меня нет больше, чем просто XAML сверху, потому что я даже не имею представления о том, как решить это. ..

+1

У нас был этот вопрос раньше, возможно, невозможно найти ... –

+2

@ H.B .: Возможно, я использую неправильные ключевые слова, но я не могу найти аналогичный вопрос. Пожалуйста, будьте добры и отмечайте это как дубликат, чтобы я мог его найти. –

+0

+1 причина, по которой я не знаю, почему это должно быть пустым голосованием – Paparazzi

ответ

1

Используйте ScrollViewer, поместите в него сетку, установите высоту строки в auto.
Установите конвертер на MaxHeight, если хотите какой-нибудь причудливый макет.

+0

'Grid' внутри' ScrollViewer' будет показывать одну 'Полосу прокрутки' за пределами' Expander', а не '' ScrollBar' внутри каждого 'Expander'. –

+1

Затем ScrollViewer для каждого элемента ItemsControl. –

0

Используйте элемент управления accordion из набора инструментальных средств, чтобы получить требуемое поведение.

+0

Последний выпуск - два года, и в отзывах указано, что есть много ошибок. Это не то, что я хочу использовать. –

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