ItemsControl包装窗口内的内容

时间:2011-03-22 16:21:19

标签: wpf mvvm user-controls itemscontrol itemsource

我在WPF窗口中使用ItemsControl。 itemscontrol与集合绑定,集合是一组视图模型(用户控件)。我的问题 - 由于集合中的许多视图模型,视图超出了当前窗口。我用滚动条尝试了很多东西来处理它但没用。有什么建议?问题是如何在窗口中包含itemscontrol(滚动)?

下面的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 个答案:

答案 0 :(得分:6)

ItemsControl换成ScrollViewer

更新:在您的示例中,如果行高度无法正确缩放,也会将行高设置为*。

答案 1 :(得分:2)

除了@Bas的回答,请将MaxHeightMinHeight属性设置为您的窗口尺寸。您可以使用示例中的硬编码数字,也可以创建与Window.ActualHeight/ActualWidth的绑定。