2011-03-22 148 views
2

我在WPF窗口中使用ItemsControl。 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> 

回答

6

包装你在ScrollViewer

更新ItemsControl:在你的榜样,还设置行高为*如果不能正确缩放。

+1

嗯,我做到了,但滚动查看器本身超出了窗口,我无法滚动 – Jimmy 2011-03-22 16:26:32

2

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

+0

这是需要在WPF中?也许将第一行改为*也应该这样做。设置MaxHeight和MinHeight根本不算优雅。 – Bas 2011-03-22 18:11:07

+0

@你说的对,在代码发布中将第一行高设置为*会更好。我没有注意到:) – Rachel 2011-03-22 18:17:33