Подгонка содержимого элементов управления Expander в независимое от разрешения окно - PullRequest
0 голосов
/ 17 ноября 2010

У меня полноэкранное приложение WPF, которое должно «адаптироваться» к различным разрешениям экрана, что означает, что макет в основном определяется настройкой VerticalAlignment и HorizontaAlignment соответствующим образом и игрой с Margin.

Теперь на моем макете у меня есть DockPanel с несколькими Expander элементами управления внутри, расширяющимися по горизонтали.Мой ожидаемый результат будет похож на оригинальную Панель управления Xbox 360 , но проблема в следующем: ширина области содержимого для Expander, очевидно, зависит от размера, который занимает содержимое внутри.Мне нужно, чтобы элемент управления полностью расширился до конца экрана, оставляя только место для оставшихся Expander элементов управления (как на изображении в ссылке выше).

Пример содержимого Expander is:

<ListBox x:Name="lbDocentes" Margin="30,30,30,30" BorderThickness="0" ScrollViewer.VerticalScrollBarVisibility="Hidden" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Background="Transparent">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel x:Name="wrapPanel" IsItemsHost="True" ItemHeight="170" ItemWidth="340" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>

Этот Listbox должен растягиваться, чтобы заполнить все доступное пространство.

Мой текущий обходной путь использует файл codebehind .cs: я проверяю разрешение экрана, вычитаюколичество, необходимое для заголовков расширителя, а затем используйте Width="{Binding Path=ControlWidth}" в файле XAML, что не является элегантным решением.

Мне нужно как-то установить ширину для элемента управления, чтобы я мог сказать, что это содержимоерастянуть на доступное пространство.Любые идеи о том, как я мог бы сделать это только в коде XAML?

Спасибо!

1 Ответ

0 голосов
/ 17 ноября 2010

Поместите Grid внутрь DockPanel и поместите каждый расширитель в его собственную колонку;если ListBox не заполняет расширитель, установите его HorizontalAlignment на Stretch

Этот ответ также может помочь вам: Как получить элементы управления в WPF для заполнения доступного пространства?

...