C# WPF ListView GridView列宽占空间的50%
我得到了一个C# WPF ListView GridView列宽占空间的50%,c#,wpf,listview,C#,Wpf,Listview,我得到了一个列表视图的xaml: <ListView Grid.Row="4" Grid.Column="1" ItemsSource="{Binding Path=ListViewAgentItems}" HorizontalAlignment="Left" HorizontalContentAlignment="Left"> <ListView.ItemContaine
列表视图的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的大小会自动调整,以适合它所保存的数据,而我不需要这些数据 简单的解决方案是使用datagrid而不是listview。您可以将datagrid xxxx列宽设置为*
如果您确实想坚持使用listview,但没有设置宽度,因此可以将宽度设置为特定的数字,请参阅。
如果切换到只读数据网格
,则可以使用:
此解决方案出现了一些奇怪的情况。这个设计是我想要的。但是,当我运行应用程序时,它会自动添加更多列,其中包含该类型的其他字段成员ListViewAgentItems@YonatanNir:哦,您应该添加AutoGenerateColumns=“False”
。查看我的编辑。为什么需要IsReadOnly?它也可以在没有it@YonatanNir:如果属性为只读,则不需要它。否则,您可以通过双击单元格对其进行编辑,然后它将不再作为列表视图
。这就是我将其添加到示例标记中的原因。
<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>