C# 为什么ListView行会随机变得非常高?
我在网格的第一行有一个ListView。通过双击下面GridControl中的项目,有一些数据填充每一行。因此,它的主要思想是单击GridControl项,以便在ListView中也可以看到它 问题很奇怪:第一个项目总是被添加,并且在ListView中看起来很正常,但是接下来的项目可能会以随机顺序变得非常大 我没有找到任何ListView.Rows属性或类似属性。所以我不能明确地设置我想要的方式 有一个网格,ListView在其中保存:C# 为什么ListView行会随机变得非常高?,c#,wpf,listview,C#,Wpf,Listview,我在网格的第一行有一个ListView。通过双击下面GridControl中的项目,有一些数据填充每一行。因此,它的主要思想是单击GridControl项,以便在ListView中也可以看到它 问题很奇怪:第一个项目总是被添加,并且在ListView中看起来很正常,但是接下来的项目可能会以随机顺序变得非常大 我没有找到任何ListView.Rows属性或类似属性。所以我不能明确地设置我想要的方式 有一个网格,ListView在其中保存: <Grid.RowDefinitions>
<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>
以下是指向图像的链接:
图像中有一个示例,第一、第二和第三行看起来正常,但第四行非常大。看起来并不总是这样的:接下来的两行是正常的,但是接下来的三行又变大了
你见过这样的问题吗?假设你所说的网格写在这里:
<Grid.RowDefinitions>
<RowDefinition Height="200" x:Name="xSelectedRow"/>
<RowDefinition Height="4"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
每行的高度定义不一致
特定的数字将给出特定的高度,但某些参数可能会更改并缩放此高度。这就解释了为什么第一行仍然正确。
一个星号*将告诉代码使行与网格成比例
自动生成行以适应内容的大小。包装和填充可能会导致意外结果。
我建议尝试为所有行指定一个足够大的特定高度200,或者将所有行都设置为星形*关于为什么有些行更高的问题,答案是: 将TextBlock设置为wrap,并将其中的字符串设置为wrap,然后使这些控件增长 这不是随机的 决定你喜欢哪一种 当前已增加某些行的高度 通过设置maxheight截断字符串 降低Name变量的大小,以便他们只能输入这么多 一些混合物
以其他方式重新排列UI。您的xaml看起来很混乱,尤其是ListView的绑定。您的元素是否需要这些名称?你能设置CanContentScroll=False吗?@XAMIMAX,我应该在哪里设置它?它将提供什么?您将使用数据绑定,即修改ListView的集合,并让ListView处理新添加的项。如何将项目添加到列表视图?我无法了解您的图像安全限制。当您从gridview中的两个文本块中删除TextWrapping=Wrap时会发生什么情况?@Andy,删除TextWrapping可以解决这个问题,谢谢,但是知道有些字符串太长,所以列中没有足够的空间来显示它。不,网格,您指的是ListView的容器