【发布时间】:2017-03-20 18:39:49
【问题描述】:
我有一个listview 和一个gridview。我希望gridview 中的一列的列标题为空,但其他列有它们的标题。但是当我为那个GridViewColumn 设置header="" 时,该列的宽度会缩小以适应空列标题的宽度,因此该列变得不可见。我为该列测试了width="auto",但它不起作用。如何强制此列根据其单元格的宽度而不是其标题设置其宽度?
其标题应为空的列:
<GridViewColumn>
<GridViewColumn.Header>
<GridViewColumnHeader Padding="2,2,2,0" VerticalContentAlignment="Bottom" ClickMode="Press" />
</GridViewColumn.Header>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Converter={StaticResource IndexConverter}}" FontWeight="Bold" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
转换器:
public class IndexConverter : IValueConverter
{
public object Convert(object value, Type TargetType, object parameter, CultureInfo culture)
{
ListViewItem item = (ListViewItem)value;
ListView listView = ItemsControl.ItemsControlFromItemContainer(item) as ListView;
int index = listView.ItemContainerGenerator.IndexFromContainer(item) + 1;
return index.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return new object(); }
}
谢谢
【问题讨论】:
-
在此处添加一些 xaml。
-
在像
<GridViewColumn DisplayMemberBinding="{Binding Path=Country}" />这样的简单示例中,列自动具有其内容的宽度!此外,如果设置了width="auto"或Header=""。你最好从简单的例子开始,或者提供一些代码!