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