2012-08-14 48 views
1

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

<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

看在对象浏览器:

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

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

这就是为什么你无法做到这一点。它是双重类型。

+0

但为什么我可以设置元素属性中的宽度为星号,它会工作?例如: Boo 2012-08-15 06:06:35

+0

@Boo在这种情况下,您将宽度设置为列(** DataGridColumn **类型),但不是它的标题(** DataGridColumnHeader **类型)。 – Artiom 2012-08-15 06:21:42

+0

感谢您的解释,@Artion,但我的问题仍未解决 - 我无法设置列的宽度。 我尝试使用