2014-02-08 172 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>