Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF ListView GridView列宽占空间的50%_C#_Wpf_Listview - Fatal编程技术网

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>