我如何:
代码如下:
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Id}" Width="40"/>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="100" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}"/>
</GridView>
</ListView.View>
</ListView>
部分答案:
感谢Kjetil,GridViewColumn.CellTemplate运行得很好,自动宽度当然也工作得很好,但是当ObservativeCollection“集合”被更新为比列宽更长的数据时,列大小不会自动更新,因此这只是一种用于初始数据显示的解决方案:
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Id}" TextAlignment="Right" Width="40"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="Auto" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}" Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
发布于 2009-02-18 11:23:53
要使每一列自动调整大小,可以在GridViewColumn上将Width=设置为“自动”。
要右对齐ID列中的文本,可以使用TextBlock创建单元格模板并设置TextAlignment。然后设置ListViewItem.HorizontalContentAlignment (在ListViewItem上使用带有setter的样式),使单元格模板填充整个GridViewCell。
也许有一个更简单的解决方案,但这应该是可行的。
注意:该解决方案既需要HorizontalContentAlignment=Stretch in Window.Resources,也需要CellTemplate中的TextAlignment=Right。
<Window x:Class="WpfApplication6.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</Window.Resources>
<Grid>
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" Width="40">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Id}" TextAlignment="Right" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="Auto" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}" Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
发布于 2009-12-19 08:14:54
如果内容的宽度发生变化,则必须使用下面这段代码来更新每一列:
private void ResizeGridViewColumn(GridViewColumn column)
{
if (double.IsNaN(column.Width))
{
column.Width = column.ActualWidth;
}
column.Width = double.NaN;
}
您必须在该列的数据每次更新时触发它。
发布于 2011-06-30 10:36:17
如果您的listview也在调整大小,那么您可以使用行为模式来调整列的大小,以适应整个ListView宽度。几乎与使用grid.column定义相同
<ListView HorizontalAlignment="Stretch"
Behaviours:GridViewColumnResize.Enabled="True">
<ListViewItem></ListViewItem>
<ListView.View>
<GridView>
<GridViewColumn Header="Column *"
Behaviours:GridViewColumnResize.Width="*" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox HorizontalAlignment="Stretch" Text="Example1" />
</DataTemplate>
</GridViewColumn.CellTemplate>
请参阅以下链接以获取一些示例以及指向源代码http://lazycowprojects.tumblr.com/post/7063214400/wpf-c-listview-column-width-auto的链接
https://stackoverflow.com/questions/560581
复制相似问题