我得到了一个xaml的ListView
<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会自动调整大小以适应它所保存的数据,这是我不想要的。
发布于 2019-05-23 18:08:53
如果切换到只读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>
发布于 2019-05-23 01:15:58
简单的解决方案是使用datagrid而不是listview。您可以将datagrid xxxx列宽设置为*。
如果您确实希望使用listview,并且没有设置宽度以便可以将宽度设置为特定的数字,请参见。How can I get a ListView GridViewColumn to fill the remaining space in my grid?
https://stackoverflow.com/questions/56261020
复制相似问题