2012-08-14 35 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,但我的問題仍未解決 - 我無法設置列的寬度。 我嘗試使用