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