2014-02-08 206 views
0

我想在DataGridComboxColumn中設置backgroundcolor。 我試着用在DataGridComboxColumn中設置背景顏色

<DataGridComboBoxColumn Header="Auswahl1" TextBinding="{Binding Auswahl1S, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" > 
    <DataGridComboBoxColumn.ElementStyle> 
     <Style TargetType="ComboBox"> 
      <Setter Property="ItemsSource" Value="{Binding Path=AuswahlL, ElementName=testdialog}" /> 
      <Setter Property="Background" Value="{Binding Path=Auswahl1Background}" /> 
     </Style> 
    </DataGridComboBoxColumn.ElementStyle> 
    <DataGridComboBoxColumn.EditingElementStyle> 
     <Style TargetType="ComboBox"> 
      <Setter Property="ItemsSource" Value="{Binding Path=AuswahlL, ElementName=testdialog}" /> 
     </Style> 
    </DataGridComboBoxColumn.EditingElementStyle> 
</DataGridComboBoxColumn> 

我也試着在後面的代碼XAML:

DataGridComboBoxColumn col4 = new DataGridComboBoxColumn(); 
col4.Header = "Auswahl4"; 
col4.ItemsSource = AuswahlL; 
col4.TextBinding = new Binding("Auswahl4S"); 
Binding b = new Binding("Auswahl1Background"); 
Style style = new System.Windows.Style(typeof(ComboBox)); 
style.Setters.Add(new Setter(ComboBox.BackgroundProperty, b)); 
col4.ElementStyle = style; 

沒有工作,我不知道什麼是錯在這裏。

感謝 沃爾特

+0

組合框背景不能改變,除非你修改它的'ControlTemplate',因爲邊框的背景是明確設置在它的默認模板中的。即使是簡單的'也不行。 –

+0

檢查該鏈接的答案 http://stackoverflow.com/questions/24800543/how-add-background-colors-in-datagridcomboboxcolumn-ltems-wpf/32712891#32712891 –

回答

0

使用DataGridTemplateColumn代替DataGridComboBoxColumn。所以,你可以直接設置任何你想要的東西控制..

<DataGridTemplateColumn Header="Auswahl1"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <ComboBox x:Name="ComboBoxColumn"> 
       <ComboBox.Style> 
        <Style TargetType="ComboBox"> 
          <Setter Property="ItemsSource" Value="{Binding Path=AuswahlL, ElementName=testdialog}" /> 
          <Setter Property="Background" Value="{Binding Path=Auswahl1Background}" /> 
        </Style> 
       </ComboBox.Style> 
      </ComboBox> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

,否則你可以使用StyleSelector和背景設置爲特定的柵格單元。 DataGridTemplateColumn

您可以按照以下link..

+0

這絕對不是回答OP的問題。無需修改Combobox的ControlTemplate就無法更改組合框的背景。 –

0

我希望它會幫助你提到的同樣的事情。

<DataGridComboBoxColumn> 
    <DataGridComboBoxColumn.CellStyle> 
     <Style TargetType="DataGridCell"> 
      <Setter Property="Background" Value="Gold"/> 
     </Style> 
    </DataGridComboBoxColumn.CellStyle> 
</DataGridComboBoxColumn>