在xaml中自动更改列宽

时间:2016-07-05 09:25:03

标签: wpf xaml datagrid

我有一个带有复选框和组合框的堆栈面板:

<StackPanel Name="PointSizeFilter"
            Style="{StaticResource StackPanelCell}">
    <CheckBox ... />
    <ComboBox ... />
</StackPanel>

还有一个数据网格。当stackpanel的宽度发生变化时,我也希望调整datagrid列的大小。

<DataGrid Style="{StaticResource DataGridEditable}"
          ItemsSource="{Binding ElementName=IModel, Path=ControlPoints.Collection}"
          Name="DataGridCheckpoints">
    <DataGrid.Columns>
        ...
        <DataGridComboBoxColumn Header="{x:Static constants:Labels.ControlPointsObjectSize}"
                                Width="{Binding ElementName=PointSizeFilter, Path=ActualWidth}"
                                ItemsSource="{Binding Source={x:Static controlpoints:CpViewModel.PointSizeItems}}"
                                DisplayMemberPath="Name"
                                SelectedValuePath="Id"
                                SelectedValueBinding="{Binding PointSizeId, UpdateSourceTrigger=PropertyChanged}"/>                                    
    </DataGrid.Columns>
</DataGrid>

但它不起作用。我究竟做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

一个可能的原因是DataGridColumn上的Width属性不是ActualWidth的double,而是DataGridLength类型。尝试在两者之间放置一个转换器。