列表框内的WPF DataGrid列宽

列表框内的WPF DataGrid列宽,wpf,datagrid,listbox,sizing,Wpf,Datagrid,Listbox,Sizing,我有一个列表框,它被数据绑定到一些数据,我希望在这个列表框中有重复的数据网格 我在做这件事时发现了一个奇怪的异常现象,希望有人能帮助我 如果我将DataGrid与ColumnWidths=“*”放在一起,它就可以正常工作 如果我把DataGrid放在一个列表框中,所有的列都很小 下面是一个简单的例子,我刚刚在Blend中找到: <Window.Resources> <SampleData:SampleDataSource x:Key="SampleDataSource" d:I

我有一个列表框,它被数据绑定到一些数据,我希望在这个列表框中有重复的数据网格

我在做这件事时发现了一个奇怪的异常现象,希望有人能帮助我

如果我将DataGrid与ColumnWidths=“*”放在一起,它就可以正常工作

如果我把DataGrid放在一个列表框中,所有的列都很小

下面是一个简单的例子,我刚刚在Blend中找到:

<Window.Resources>
<SampleData:SampleDataSource x:Key="SampleDataSource" d:IsDataSource="True"/>
</Window.Resources>

<DockPanel DataContext="{Binding Source={StaticResource SampleDataSource}}" >               
   <ListBox HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
      <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Collection}"
           ColumnWidth="*" >
    <DataGrid.Columns>
      <DataGridTextColumn Binding="{Binding Property1}" Header="Property1"/>
      <DataGridCheckBoxColumn Binding="{Binding Property2}" Header="Property2"/>
      </DataGrid.Columns>
      </DataGrid>
   </ListBox>       
</DockPanel>

这将产生以下输出:

如果有人愿意帮我解决这个问题,我将不胜感激


谢谢。

我遇到了同样的问题。试试这个:

    <ListBox>
        <ItemsControl.Template>
            <ControlTemplate TargetType="ItemsControl">
                <ItemsPresenter Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=ActualWidth}"/>
            </ControlTemplate>
        </ItemsControl.Template>
        <!-- ... -->
    </ListBox>

我遇到了同样的问题。试试这个:

    <ListBox>
        <ItemsControl.Template>
            <ControlTemplate TargetType="ItemsControl">
                <ItemsPresenter Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=ActualWidth}"/>
            </ControlTemplate>
        </ItemsControl.Template>
        <!-- ... -->
    </ListBox>


您是否尝试过
ColumnWidth=“Auto”
ColumnWidth=“SizeToHeader”
ColumnWidth=“SizeToCells”
您在寻找什么布局?是的,我已经尝试过所有布局。我只想调整星号(*)的大小,使其在列表框中正常工作。如果我将列宽设置为绝对数(Width=“200”),效果很好,但不幸的是,这不是我需要的。您想要的布局是什么,上面所有的选项都显示整个列。没有其他限定符的星形选项只会使每一列相对于网格的大小相同。因此,5列的大小都是datagrid的1/5。因为将有多个数据网格,所以具有不同大小的列看起来很奇怪。如果您想要更好的想法,请获取示例代码,然后从列表框中删除Datagrid,您将看到它的外观。是否需要HorizontalScrollBar?因为您可以禁用它以允许列表框计算其宽度,
您是否尝试过
ColumnWidth=“Auto”
ColumnWidth=“SizeToHeader”
ColumnWidth=“SizeToCells”
您要找的布局是什么?是的,我已经尝试了所有这些布局。我只想调整星号(*)的大小,使其在列表框中正常工作。如果我将列宽设置为绝对数(Width=“200”),效果很好,但不幸的是,这不是我需要的。您想要的布局是什么,上面所有的选项都显示整个列。没有其他限定符的星形选项只会使每一列相对于网格的大小相同。因此,5列的大小都是datagrid的1/5。因为将有多个数据网格,所以具有不同大小的列看起来很奇怪。如果您想要更好的想法,请获取示例代码,然后从列表框中删除Datagrid,您将看到它的外观。是否需要HorizontalScrollBar?因为您可以禁用它以允许列表框计算其宽度,