我有一个数据绑定到某些数据的ListBox,我希望在其中重复使用DataGrids。
我这样做时发现了一个奇怪的异常,并希望有人可以帮助我。
如果我将DataGrid与ColumnWidths =“*”放在一起,它可以正常工作。
如果我将DataGrid放在ListBox中,那么列就很小了。
这是一个简单的例子,我刚刚在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>
这会产生以下输出:
任何想帮我解决问题的人,我都会非常感激。
感谢。
答案 0 :(得分:1)
我遇到了同样的问题。试试这个:
<ListBox>
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<ItemsPresenter Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=ActualWidth}"/>
</ControlTemplate>
</ItemsControl.Template>
<!-- ... -->
</ListBox>