2017-08-27 197 views
0

孩子的財產我有一個對象CellContent與性能文本BACKGROUNDCOLOR。與CellContent對象我創建了一個列表與屬性名字姓氏。我將此列表綁定到DataGrid。我喜歡做的是根據Brush屬性設置背景顏色。綁定到XAML

下面的代碼可以很好地用於特定的屬性名字但我想設置它名字了。

<DataGrid x:Name="DG"> 
    <DataGrid.CellStyle> 
     <Style TargetType="{x:Type DataGridCell}"> 
      <Setter Property="DataGridCell.Background" Value="{Binding LastName.Background}" /> 
     </Style> 
    </DataGrid.CellStyle> 
</DataGrid> 

所以現在的問題是,我怎麼綁定到CellContent對象的孩子在XAML或我怎麼能以某種通配符代替名字?

+0

爲每個列單獨設置CellStyle – ASh

+0

設置單獨的列樣式將有助於這個小例子,但是有沒有更靈活的解決方案? – fussel

+0

@ASh:謝謝你指出。 – fussel

回答

0

我在生成表格時使用AutoGeneratingColumn事件來分配Background屬性。 DataGrid的XAML現在看起來是這樣的:

<DataGrid Name="DG" AutoGeneratingColumn="DG_AutoGeneratingColumn" />   

和後面的代碼:

private void DG_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
{       
    DataGridTextColumn textColumn = new DataGridTextColumn(); 
    textColumn.Header = e.Column.Header; 
    textColumn.Binding = new Binding(e.Column.Header.ToString()); 

    textColumn.CellStyle = new Style(); 
    textColumn.CellStyle.TargetType = typeof(DataGridCell); 
    textColumn.CellStyle.Setters.Add(new Setter(DataGridCell.BackgroundProperty, new Binding(e.Column.Header + ".Background"))); 

    (sender as DataGrid).Columns.Add(textColumn); 

    // Prevent autogenerating the columns 
    e.Cancel = true; 
} 

這當然不是最好的解決方案,但它解決了我的問題。