【发布时间】:2018-09-01 19:07:01
【问题描述】:
我有以下 XAML。我似乎无法解决的问题是,我有一个滚动查看器,它环绕着一个充满视图的网格(具有固定高度),但无法让滚动条在超过窗口大小的内容上滚动。
我希望用户控件填充窗口的整个高度,但在网格控件长度大于窗口大小时也可以滚动。但是如果我不手动设置滚动查看器的高度,那么我将永远无法获得可滚动的滚动条(在示例中手动设置)。
我查看了网站上的其他示例,但找不到有效的答案(包括这个link)。
XAML:
<UserControl d:DesignWidth="300" d:DataContext="{d:DesignInstance ViewModels:EntityViewModel}">
<StackPanel>
<Label Content=“text” />
<ScrollViewer Height="450" Width="250" VerticalScrollBarVisibility="auto">
<Grid>
<ItemsControl ItemsSource="{Binding Entities}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:EntityView DataContext="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</ScrollViewer>
</StackPanel>
</UserControl>
编辑:
我正在添加一个可以轻松重新创建的附加示例。需要能够使滚动视图可以与停靠面板(可以是网格)一起滚动,其内容比插入用户控件的屏幕上的内容要多(这意味着我不能有一个固定的滚动查看器上的大小)。
<Window Title="MainWindow" Height="200" Width="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<Label Content="title"/>
<ScrollViewer>
<DockPanel>
<Label DockPanel.Dock="Top" Content="title" HorizontalContentAlignment="Center" />
<Label DockPanel.Dock="Top" Content="title" HorizontalContentAlignment="Center" />
<Label DockPanel.Dock="Top" Content="title" HorizontalContentAlignment="Center" />
<Label DockPanel.Dock="Top" Content="title" HorizontalContentAlignment="Center" />
<Label DockPanel.Dock="Top" Content="title" HorizontalContentAlignment="Center" />
<Label DockPanel.Dock="Top" Content="title" HorizontalContentAlignment="Center" />
<Label DockPanel.Dock="Top" Content="title" HorizontalContentAlignment="Center" />
</DockPanel>
</ScrollViewer>
</StackPanel>
</Grid>
</Window>
【问题讨论】:
-
除了Grid还有其他UI控件吗?
-
是的,WPF 控件,它需要是一个格式化列表,内容是一个视图并且可以滚动。
-
StackPanel 的用途是什么?删除它。
-
这里有一个支持标签,我删除了发布示例的标签,因为它不相关并且我不想分散注意力。
-
无论有没有,这个问题仍然适用。你只是挑剔。
标签: c# wpf scrollviewer