首页 > 解决方案 > 为什么 ListView 行会随机变得非常非常高?

问题描述

我在 aListView的第一行有一个Grid。通过双击GridControl下面的项目,有一些数据会填充每一行。所以它的主要思想是点击一个GridControl项目,这样它也可以被看到ListView

问题很奇怪:第一个项目总是被添加并且在 中看起来正常ListView,但是接下来的项目会变得非常大,随机顺序。

我没有找到任何ListView.Rows财产或类似的东西。所以我无法明确设置我想要的方式。

有一个 Grid,ListView 保存在其中:

<Grid.RowDefinitions>
    <RowDefinition Height="200" x:Name="xSelectedRow"/>
    <RowDefinition Height="4"/>
    <RowDefinition Height="*"/>
    <RowDefinition Height="Auto"/>
</Grid.RowDefinitions>

ListView 有一些列:

<ListView x:Name="xListSelected" BorderBrush="Transparent" Grid.Row="0" 
          ItemsSource="{Binding SelectedItemsSource}"
          SelectedItem="{Binding SelectedSelectedItem}">

    <ListView.Resources>
        <Style TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="Padding" Value="10 2 4 2" />
            <Setter Property="Visibility" Value="Collapsed" />
        </Style>
    </ListView.Resources>

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseDoubleClick">
            <i:InvokeCommandAction
                Command="{Binding RemoveSelectedItemCommand}"  
                CommandParameter="{Binding ElementName=LayoutRoot, Path=SelectedItem}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>

    <ListView.View>                        
        <GridView>
            <GridView.Columns>
                <GridViewColumn Width="{Binding Path=ActualWidth, ElementName=xProjectViewId}">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock TextWrapping="Wrap" Text="{Binding Id}"
                                       FontSize="14"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Width="{Binding Path=ActualWidth, ElementName=xName}" >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock TextWrapping="Wrap" Text="{Binding Name}"
                                       FontSize="14"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView.Columns>                            
        </GridView>
    </ListView.View>
</ListView>

这是图片的链接:https ://imgbbb.com/image/jkdJp

图像中有一个示例,其中第一行、第二行和第三行看起来正常,但第四行非常大。而且似乎并不总是这样:接下来的两排可以正常,但接下来的三排又大了。

你见过这样的问题吗?

标签: c#wpflistview

解决方案


关于为什么有些行更高的问题的答案是:

您将文本块设置为换行,其中的字符串然后使这些控件增长。

这不是随机的。

决定你喜欢哪个。

当前增加了一些行的高度。

通过设置 maxheight 截断字符串。

降低(大概)名称变量的大小,以便他们只能输入这么多。

一些混合。

以其他方式重新安排您的 UI。


推荐阅读