将DataGrid列宽设置为Star样式

时间:2012-08-14 11:14:03

标签: wpf xaml .net-4.0 datagrid

如何将DataGrid标头的XAML宽度设置为*? 此代码不起作用:

<DataGrid>
    <DataGrid.Resources>
        <Style x:Key="CbClmn" TargetType="DataGridColumnHeader">
            <Setter Property="Width" Value="30" />
        </Style>
        <Style x:Key="TxtClmn" TargetType="DataGridColumnHeader">
            <Setter Property="Width" Value="*" />
        </Style>
    </DataGrid.Resources>
    <DataGrid.Columns>
        <DataGridCheckBoxColumn HeaderStyle="{StaticResource CbClmn}" />
        <DataGridTextColumn Header="Title" HeaderStyle="{StaticResource TxtClmn}" />
        <DataGridCheckBoxColumn Header="Selected" HeaderStyle="{StaticResource CbClmn}" />
    </DataGrid.Columns>
</DataGrid>

样式TxtClmn生成异常'*' string cannot be converted to Length

1 个答案:

答案 0 :(得分:1)

查看对象浏览器:

//DataGridColumn
public System.Windows.Controls.DataGridLength Width { set; get; }

//DataGridColumnHeader
public double Width { set; get; }

这就是你不能那样做的原因。这是双重类型。