我该如何在WPF/XAML中滚动表格行?

5

你好,感谢查看!

背景

我在WPF中制作了一个简单的应用程序,它具有由一列和两行组成的网格布局。顶部行包含一个简单的标签作为标题,底部行包含一个wrappanel,在运行时动态填充图像缩略图。以下是XAML代码:

<Window x:Class="HTNavigator.MainWindow" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        Title="MainWindow" WindowState="Maximized" WindowStyle="None">
    <Window.Background>
        <ImageBrush ImageSource="/HTNavigator;component/Images/HNBG.jpg" />
    </Window.Background>
    <Grid >
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="75"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>  
        <StackPanel Grid.Column="0" Grid.Row="0" Height="50" HorizontalAlignment="Left" Margin="30,10,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="Auto" FlowDirection="LeftToRight" Orientation="Horizontal" >
            <Label Content="Home Navigator v0.1" FontFamily="Tahoma" FontSize="18" FontWeight="Bold" Foreground="White" />
            <Button Content="Close" Height="50" Click="Button_Click"></Button>
        </StackPanel>
        <ScrollViewer Grid.Row="1" Name="MyScrollViewer" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
            <WrapPanel HorizontalAlignment="Center" Name="spContainer" VerticalAlignment="Top" ClipToBounds="True"></WrapPanel>
        </ScrollViewer>
    </Grid>
</Window>

问题

滚动条未显示,鼠标滚轮也无法滚动。最初我没有使用网格布局,此时XAML的这部分表现如预期:

<ScrollViewer Name="MyScrollViewer" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
            <WrapPanel HorizontalAlignment="Center" Name="spContainer" VerticalAlignment="Top"               ClipToBounds="True" ItemHeight="Auto"> </WrapPanel>
</ScrollViewer>

现在一切都布局得很好,但我没有垂直滚动条的功能(我不想要水平滚动条)。
有什么想法吗?
谢谢!
Matt
1个回答

5

我知道今天是除夕之夜,但您的WrapPanel中没有任何内容,而且行高设置为自动,因此它会随内容增长。请在WrapPanel中放置一些内容并将高度设置为*。另外,请将StackPanel中的标签列去掉。

在您提到“在没有Grid的情况下”的示例中,有一个Grid.Row。祝新年快乐。


你在说什么?新年前夜已经过去将近14个小时了!开个玩笑 :) - ChrisWue
哈哈,抱歉所有的好建议。实际上,在去庆祝之前匆忙提出这个问题才是问题所在!Wrappanel在运行时获取其内容。我会尝试你提到的其他方法。谢谢! - Matt Cashatt
再次感谢BalamBalam--祝您新年快乐! - Matt Cashatt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接