WPF DataGridColumn ListBox内的宽度

时间:2013-07-26 08:03:12

标签: wpf datagrid listbox sizing

我有一个数据绑定到某些数据的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>

这会产生以下输出: Bad, bad datagrid columns

任何想帮我解决问题的人,我都会非常感激。

感谢。

1 个答案:

答案 0 :(得分:1)

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

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