【问题标题】:How do I scroll a grid row in WPF/XAML?如何在 WPF/XAML 中滚动网格行?
【发布时间】:2012-01-01 00:22:01
【问题描述】:

您好,感谢您的关注!

背景

我在 WPF 中制作了一个简单的小应用程序,它具有由一列和两行组成的网格布局。顶行包含标题的简单标签,底行包含在运行时动态填充图像缩略图的包装面板。这是 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>

现在一切都安排好了,但我没有获得垂直滚动的能力(我不想要水平滚动)。

有什么想法吗?

谢谢!

马特

【问题讨论】:

    标签: c# wpf silverlight xaml


    【解决方案1】:

    我知道现在是新年前夜,但 WrapPanel 中没有任何内容,并且行高设置为 Auto,因此它会随着内容而增长。在 WrapPanel 中放入一些东西并将高度设置为 *。并将列从 StackPanel 内的标签上取下。

    在您的“在您拥有网格之前”的示例中,有一个 Grid.Row。新年快乐。

    【讨论】:

    • 你在说什么?新年前夜已经快 14 小时了!! SCNR :)
    • 哈哈,对不起所有的优点。实际上,在庆祝之前试图赶这个问题是问题所在! Wrappanel 在运行时获取其内容。我会尝试你提到的其他事情。谢谢!
    • 再次感谢BalamBalam--也祝你新年快乐!
    猜你喜欢
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 2011-02-23
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多