C# 带有图像的垂直滚动列表视图不适合屏幕宽度

C# 带有图像的垂直滚动列表视图不适合屏幕宽度,c#,wpf,xaml,listview,C#,Wpf,Xaml,Listview,我是WPF新手,现在正在编写简单的应用程序。我想创建一个ListView,对于任何元素计数,它有3列宽3行高,在web上搜索大约2个小时,但找不到解决方案:( 这就是我想要的: 这就是我现在拥有的: 在我的应用程序中,我使用页面 这是我主页的XAML代码(用于分离“导航”面板和“内容”面板): 这是我的一个“内容”页面的XAML代码: 我怎样才能做出正确的布局?谢谢你的提示 编辑#1:初始问题已解决:我应该将ScrollViewer.HorizontalScrollBarVisibi

我是WPF新手,现在正在编写简单的应用程序。我想创建一个ListView,对于任何元素计数,它有3列宽3行高,在web上搜索大约2个小时,但找不到解决方案:(

这就是我想要的:

这就是我现在拥有的:

在我的应用程序中,我使用页面

这是我主页的XAML代码(用于分离“导航”面板和“内容”面板):


这是我的一个“内容”页面的XAML代码:


我怎样才能做出正确的布局?谢谢你的提示

编辑#1:初始问题已解决:我应该将
ScrollViewer.HorizontalScrollBarVisibility
设置为
禁用
(感谢@Clemens)

但现在我的ListView扩展到了可视区域之外,这就是为什么我不能垂直滚动它的原因。那么,哪里有问题呢

已解决:我只需要将
列表视图
所在的
网格的
更改为
值,因为
自动
表示“按内容大小”,而
*
表示“填充最大父大小”:


p.S.我更改了上面的代码,所以现在它是正确的。

尝试
ScrollViewer.HorizontalScrollBarVisibility=“Disabled”
。除此之外,您可能希望使用UniformGrid作为ItemsPanel。它很有效!但是我仍然不能垂直滚动,因为我在stackoverflow.com上读到它有助于在WPF中实现平滑滚动。我试图删除ScrollViewer.CanContentScroll=“False”——没有结果。
<Page x:Class="WpfApp.MainPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:WpfApp"
      mc:Ignorable="d" 
      d:DesignWidth="1920"
      d:DesignHeight="1080" 
      Title="MainPage">

    <Grid>

        <Grid.RowDefinitions>
            <RowDefinition Height="5*"/>
            <RowDefinition Height="95*"/>
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <DockPanel Grid.Row="0"
                   Grid.Column="0"
                   HorizontalAlignment="Stretch"
                   Height="Auto"
                   Width="Auto"
                   Margin="15,15,15,0">

            <!-- My controls for select content in listview below -->

        </DockPanel>

        <Frame x:Name="ContentPages" 
               NavigationUIVisibility="Hidden"
               Grid.Row="1"
               Margin="15"/>

    </Grid>

</Page>
<Page x:Class="WpfApp.AllVideosPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:WpfApp"
      mc:Ignorable="d" 
      d:DesignWidth="1920"
      d:DesignHeight="1080" 
      Title="AllVideosPage">

    <Grid>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <ListView Grid.Row="0"
                  Grid.Column="0" 
                  x:Name="ListViewVideos" 
                  VerticalContentAlignment="Top"
                  HorizontalContentAlignment="Stretch"
                  ScrollViewer.VerticalScrollBarVisibility="Auto"
                  ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                  ScrollViewer.CanContentScroll="False">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="33*"/>
                            <ColumnDefinition Width="33*"/>
                            <ColumnDefinition Width="33*"/>
                        </Grid.ColumnDefinitions>
                    </Grid>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment"
                            Value="Stretch"/>
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel VerticalAlignment="Stretch"
                               HorizontalAlignment="Stretch"
                               Margin="15">
                        <Image Source="{Binding Image}" 
                               HorizontalAlignment="Stretch"
                               VerticalAlignment="Top"
                               Stretch="UniformToFill"/>
                        <TextBlock Text="{Binding Title}" 
                                   HorizontalAlignment="Stretch"
                                   VerticalAlignment="Bottom"
                                   TextAlignment="Center"
                                   Margin="0,15,0,0"
                                   FontSize="18"/>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

    </Grid>

</Page>