首页 > 解决方案 > 如何在 WPF 的列表视图中调整图像的宽度?

问题描述

我有一个ListView包含Image项目。每当我调整包含它的 Grid 的大小时,我希望每个图像的宽度都遵循 ListView 的宽度。

<!--Playlists-->
<Grid Column="0">
    <ListView Grid.Row="1" Grid.Column="1"
              HorizontalAlignment="Stretch"
              ... >

        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            </Style>
        </ListView.ItemContainerStyle>

        <!--Images-->
        <ListView.ItemTemplate>
            <DataTemplate DataType="{x:Type models:PlaylistModel}">
                <Grid HorizontalAlignment="Stretch">
                    <Image Source="{Binding ImagePath}"
                           Stretch="Uniform">
                    </Image>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>

    </ListView>
</Grid>

<GridSplitter Grid.Column="0" />

资料来源:http ://www.teixeira-soft.com/bluescreen/2016/03/21/c-how-to-make-a-panel-within-a-datatemplate-fill-the-entire-width-of- a-listview-或-itenscontrol-导数/

这就是发生的事情

如此处所示,图像的宽度根本不会调整大小。即使 ListView 的大小发生变化,图像大小也保持不变。但是,如果我设置Grid内部的宽度,DataTemplate那么图像实际上会遵循该宽度。

标签: c#wpfxamllistview

解决方案


看来是用错了ListView。将所有内容更改ListBox为对我来说已修复的内容。

如果有人遇到同样的问题,请留在这里。

<ListBox HorizontalAlignment="Stretch">

    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </ListBox.ItemContainerStyle>

    <ListBox.ItemTemplate>
        <DataTemplate DataType="{x:Type models:PlaylistModel}">
            <Image Source="{Binding ImagePath}"
                       Stretch="Uniform" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

推荐阅读