2010-08-17 75 views
4

我需要使用自定義CellTemplate創建可重用的DataGrid列。除此之外,此CellTemplate應包含一個TextBlock控件,我需要將該值綁定到DataGrid中顯示的值。我見過的所有例子到目前爲止直接在DataGrid的Columns屬性使用時,並指定某列的CellTemplate還指定了一個直接綁定到TextBlock,如:使用CellTemplate自定義DataGrid列並綁定

<data:DataGrid> 
    <data:DataGrid.Columns> 
     <data:DataGridTemplateColumn Header="Name"> 
      <data:DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Name}"/> 
       </DataTemplate> 
      </data:DataGridTemplateColumn.CellTemplate> 
     </data:DataGridTemplateColumn> 
    </data:DataGrid.Columns> 
</data:DataGrid> 

我需要此列封裝成單一的,可重用的控制,我想爲它指定一個綁定,就像普通的DataGridTextColumn一樣。換句話說,使用這種自定義列的時候,我只想寫是這樣的:

<data:DataGrid> 
    <data:DataGrid.Columns> 
     <controls:CustomColumn Header="Name" Binding="{Binding Name}" /> 
    </data:DataGrid.Columns> 
</data:DataGrid> 

問題是,我的自定義列從繼承DataGridTemplateColumn沒有綁定屬性。我認爲我可以使用DataGridBoundColumn,但不可能爲它指定CellTemplate。

如何達到理想的行爲?謝謝!

回答

1

我認爲最簡單的做法是創建一個customcontrol然後使用它是這樣的:

  <DataGridTemplateColumn> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <controls:CustomColumn Header="Name" Binding="{Binding Name}" /> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

我昨天做了類似的東西,它工作得很好