WPF Аккордеонный контроль во всплывающем окне - PullRequest
1 голос
/ 06 октября 2011

Я использую элемент управления Accordion по этой ссылке - Существует ли элемент управления WPF, который можно использовать для развертывания / свертывания панелей (анимированных)

Проблема в том, что я хотел бы, чтобы этот элемент управления размещался в Popup. Проблема в том, что размер всплывающего окна не изменяется при расширении группы. Если я задаю всплывающий размер фиксированного размера, то элементы расширяются, но это ужасный эффект, потому что в первый раз вы видите большое всплывающее окно с несколькими свернутыми элементами сверху. Скорее всего, размер всплывающего окна будет изменяться при расширении и / или развале элементов.

Есть предложения?

Спасибо.

РЕДАКТИРОВАТЬ: Похоже, я совершенно не понял. Мне не нужно было использовать Аккордеонный контроль. Просто поместите расширители в сетку, указав для каждой строки Height = "Auto". При развертывании / свертывании групп всплывающее окно хорошо изменяется.

Ответы [ 2 ]

0 голосов
/ 06 октября 2011

Вы можете установить высоту всплывающего окна, используя привязку к свойству ActualHeihgt вашего аккордеонного элемента управления.

Это будет выглядеть так:

<Popup Height="{Binding ElementName=myAccordion,Path=ActualHeight" >
 <Accordion x:Name="myAccordion">
  ...
 </Accordion>
</Popup>

Но вы обязательно установите ограничение по высоте. Может быть решена с помощью конвертера с параметром.

0 голосов
/ 06 октября 2011

Я действительно ненавижу всплывающее окно WPF по умолчанию, поэтому обычно использую свое собственное.Код для этого можно найти здесь

Размер содержимого всплывающего окна по умолчанию основан на размере содержимого внутри всплывающего окна.Вот пример того, как его можно использовать:

<local:PopupPanel
    local:PopupPanel.PopupParent="{Binding ElementName=PopupParentPanel}"
    local:PopupPanel.IsPopupVisible="{Binding IsPopupVisible}">

    <DockPanel>
        <Label DockPanel.Dock="Top" Background="Silver" Content="Popup Header" />
        <Button DockPanel.Dock="Bottom" Content="Save" />
        <local:MyUserControl DataContext="{Binding }" />
    </DockPanel>

</local:PopupPanel>
...