在我的应用程序中,我有一个Window
。它包含左侧菜单,标题和内容的位置。
此内容正在动态加载 - UserControl
放在那里。这些UserControls
是多种多样的。从TextBlock
到非常复杂的页面。为了确保所有内容都可见,我必须用ScrollViewer
(我的意思是在MyWindow.xaml中)包装它。一切正常,直到我需要在内容中放置ListView
。
代码看起来或多或少:
<ScrollViewer> // this is the wrapping viewer actually it's in a different file
<UserControl>
......
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="20*"/>
</Grid.ColumnDefinitions>
<ListView ItemsSource="{Binding Entities}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Style="{StaticResource Value}" Text="{Binding WorkOrderNumber}"/>
<TextBlock Style="{StaticResource Value}" Text="{Binding ActionType}"/>
<TextBlock Style="{StaticResource Value}" Text="{Binding StartDate}"/>
<TextBlock Style="{StaticResource Value}" Text="{Binding StopDate}"/>
<Separator/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Whatever.. Grid.Row="0" Grid.Column="1"/>
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
<Button Style="{StaticResource CustomButton}" Content="Previous" />
<Button Style="{StaticResource CustomButton}" Content="Current" />
<Button Style="{StaticResource CustomButton}" Content="Next" />
</StackPanel>
</Grid>
</UserControl>
</ScrollViewer>
结果是列表框没有滚动条并且变化很大。滚动条仅在窗口的滚动查看器中。
所以在我想要的UserControl中:
这可能吗?
答案 0 :(得分:0)
使用DockPanel而不是Grid。 DockPanel有一个名为LastChhildFill的属性。它默认为true。如果将ListBox设置为最后一个Child,它将填充所有空格:
<ScrollViewer>
<DockPanel>
<StackPanel DockPanel.Dock="Bottom"
Orientation="Horizontal"
HorizontalAlignment="Center">
<Button Style="{StaticResource CustomButton}"
Content="Previous" />
<Button Style="{StaticResource CustomButton}"
Content="Current" />
<Button Style="{StaticResource CustomButton}"
Content="Next" />
</StackPanel>
<ListView >
</ListView>
</DockPanel>
</ScrollViewer>
但是这个设置使按钮消失。我的意思是他们总是在ListBox的底部。所以也许你需要删除ScrollViewer 。