我得到了ListView
的xaml:
<ListView Grid.Row="4" Grid.Column="1"
ItemsSource="{Binding Path=ListViewAgentItems}"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="Agent ID" DisplayMemberBinding="{Binding AgentId}"/>
<GridViewColumn HeaderContainerStyle="{StaticResource ListViewStyle}" Header="Distance" DisplayMemberBinding="{Binding Distance}"/>
</GridView>
</ListView.View>
</ListView>
这是样式:
<Window.Resources>
<Style x:Key="ListViewStyle" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</Window.Resources>
我希望GridViewColumn
都均匀地占据所有空间,这意味着ListView
在网格列中,所以我希望GridView
占据整个列空间,并且GridView的两列都将占用宽度的50%。截至目前,ListView的大小会自动调整为适合我所不想要的数据。
答案 0 :(得分:1)
简单的解决方案是使用数据网格而不是列表视图。您可以将datagrid xxxx列宽设置为*。
如果您真的想坚持使用listview并且没有设置宽度,则可以将宽度设置为特定数字,请参见。 How can I get a ListView GridViewColumn to fill the remaining space in my grid?
答案 1 :(得分:0)
如果您切换为只读DataGrid
,则可以使用star-sizing:
<DataGrid Grid.Row="4" Grid.Column="1"
ItemsSource="{Binding Path=ListViewAgentItems}"
IsReadOnly="True" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Agent ID" Binding="{Binding AgentId}" Width="1*"/>
<DataGridTextColumn Header="Distance" Binding="{Binding Distance}" Width="1*"/>
</DataGrid.Columns>
</DataGrid>