我有一个相当复杂的应用程序。许多(prism)UserControls持有其他UserControl等...
在这个应用程序的一个选项卡中,我有一个UserControl(非棱镜),它有一个Grid,它持有ScrollViewer,而ScrollViewer又有一个ItemsControl。
出于某种原因,ScrollViewer不受网格限制。 (我使用snoop,它显示ScrollViewer是ItemsControl中所有控件的全长。)
这导致我无法获得我需要的滚动条。
以下是它的外观:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
<!-- Other stuff here -->
<ScrollViewer Grid.ColumnSpan="2" Grid.Row="3"
VerticalScrollBarVisibility="Visible" >
<ItemsControl HorizontalAlignment="Stretch"
ItemTemplate="{StaticResource ExistingContainerTemplate}"
ItemsSource="{Binding ExistingContainers}"
FocusVisualStyle="{DynamicResource InvisibleFocusVisualStyle}" Padding="2,0,0,0">
<i:Interaction.Behaviors>
<local:ScrollIntoViewForItemsControl ScrollItem="{Binding ExistingContainerItem}" />
</i:Interaction.Behaviors>
</ItemsControl>
</ScrollViewer>
</Grid>
令人沮丧的是,我在Kaxaml中尝试了类似的东西,它运行得很好:
<Grid>
<ScrollViewer Width="200" BorderBrush="Black" BorderThickness="5">
<ItemsControl>
<Rectangle Fill="Green" Width="100" Height="100"/>
<Rectangle Fill="Red" Width="100" Height="100"/>
<Rectangle Fill="Blue" Width="100" Height="100" />
<Rectangle Fill="Black" Width="100" Height="100"/>
</ItemsControl>
</ScrollViewer>
</Grid>
如果您有任何想法如何将这个限制在网格中,我很乐意听到它。
答案 0 :(得分:0)
事实证明,我有一个网格,所有这些网格都有一个RowDefinition,其高度为“Auto”。
因为它是自动的,所以内容越来越适合所有内容。
一旦我将其切换为*它工作正常。