为了账号安全,请及时绑定邮箱和手机立即绑定

根据父级大小自动调整 WPF 中的 ListView 项目

根据父级大小自动调整 WPF 中的 ListView 项目

C#
尚方宝剑之说 2021-10-09 10:30:42
我的项目中有一个 ListView,我希望 ListView 中的项目相对于父窗口大小响应地调整大小。这种自动大小更改就像 instagram Windows 应用程序:gif:http : //uupload.ir/files/c0rv_insta.gif我希望能够在 DataTemplate 中指定 MaxHeight 和 MaxWidth,以便在项目达到大小限制时显示更多项目。这是我的代码:<ListView x:Name="ViewPosts" ItemsSource="{Binding ImageUser}" ScrollViewer.HorizontalScrollBarVisibility="Disabled">    <ListView.ItemsPanel>        <ItemsPanelTemplate>             <WrapPanel Orientation="Horizontal" />        </ItemsPanelTemplate>    </ListView.ItemsPanel>    <ListBox.ItemTemplate>        <DataTemplate >            <v:StateViewPostSimple/>        </DataTemplate>    </ListBox.ItemTemplate></ListView>这是我的 DataTemplate / StateViewPostSimple:<UserControl ....>   <Grid>       <Image Stretch="Fill" Source="{Binding Images[0].URI}" MaxHeight="150" MaxWidth="150" MinHeight="100" MinWidth="100"/>   </Grid></UserControl>我设置了MaxHeight、MaxWidth和MinHeight、MinWidth但它没有区别。
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

这是因为水平WrapPanel不会拉伸其内容,它要么适合项目,要么溢出到下一行。


一种解决方案是覆盖测量并安排需要更多努力的方法。


另一种是使用UniformGridasItemsPanelTemplate自动拉伸其内容。


<ListView.ItemsPanel>

    <ItemsPanelTemplate>

        <UniformGrid Rows="{Binding NumberOfRows}" Columns="{Binding NumberOfColumns}"/>

    </ItemsPanelTemplate>

</ListView.ItemsPanel>

然后在代码中修改这两个变量(NumberOfRows、NumberOfColumns),例如:


//you need access to listview object

//set the number of columns based on the current width of listview

if(listview.ActualWidth <= 450)

    NumberOfColumns = 3;

else if(listview.ActualWidth <= 600)

    ...

或者如果您可以将其表述为:


NumberOfColumns = (int)Math.listview.ActualWidth / 150;

if(NumberOfColumns < 3) NumberOfColumns = 3;

然后你可以找到行数:


//ImageUserList.Count = number of all items

//listview.ItemsSource.Cast<object>().Count() can be used instead

NumberOfRows = (int)Math.Ceiling(ImageUserList.Count / (double)NumberOfColumns);

确保你DataContext正确以绑定到这两个变量。


查看完整回答
反对 回复 2021-10-09
  • 1 回答
  • 0 关注
  • 215 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信