ItemsControl-упаковка содержимого внутри окна - PullRequest
2 голосов
/ 22 марта 2011

Я использую ItemsControl внутри окна в WPF.Элемент управления элементами связан с коллекцией, а коллекция является группой моделей представлений (пользовательских элементов управления).Моя проблема - представление выходит за пределы текущего окна в результате множества моделей представлений в коллекции.Я пробовал много вещей, чтобы справиться с этим с помощью полосы прокрутки, но бесполезно.Какие-либо предложения?Вопрос на самом деле в том, как разместить элемент управления внутри окна (с прокруткой)?

XAML ниже

<Window x:Class="WpfApplicationTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:app="clr-namespace:WpfApplicationTest"
    Title="MainWindow" Height="350" Width="525">   
  <Grid Height="Auto">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="30"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <ItemsControl Grid.Row="0" Grid.Column="0" ItemsSource="{Binding UserControlCollection}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>           
    <StackPanel Grid.Row="1" Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Bottom">
        <Button Content="OK" Width="100" Margin="3" />
        <Button Content="Cancel" Width="100" Margin="3" />
    </StackPanel>
</Grid>

Ответы [ 2 ]

6 голосов
/ 22 марта 2011

Оберните ItemsControl в ScrollViewer

Обновление: в вашем примере также установите высоту строки на *, если она не будет правильно масштабироваться.

2 голосов
/ 22 марта 2011

В дополнение к ответу @ Bas, установите ваши свойства MaxHeight и MinHeight для размеров вашего окна. Вы можете использовать жестко запрограммированные числа, которые есть в примере, или создать привязку к Window.ActualHeight/ActualWidth.

...