如何在WPF DataGrid中设置comboBox的样式?

时间:2011-01-31 16:24:36

标签: wpf xaml datagrid styles

我有一个包含一些DataGridComboBoxColumns的DataGrid。

我希望这些列中的组合框可以应用某种样式。

所以我尝试将以下内容添加到DataGrid的资源中:

<Style x:Key="{x:Type ComboBox}" TargetType="{x:Type ComboBox}">
    <Setter Property="SnapsToDevicePixels" Value="true"/>
    <Setter Property="OverridesDefaultStyle" Value="true"/>
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
    <Setter Property="ScrollViewer.CanContentScroll" Value="true"/>

    <Setter Property="Background" Value="{StaticResource DefaultBackgroundBrush}"/>
    <Setter Property="BorderBrush" Value="{StaticResource DefaultBorderBrush}"/>
    <Setter Property="Foreground" Value="{StaticResource DefaultForegroundBrush}"/>
    <Setter Property="FontFamily" Value="{StaticResource DefaultFontFamily}"/>
    <Setter Property="FontSize" Value="{StaticResource DefaultFontSize}"/>
    <Setter Property="Padding" Value="2"/>
</Style>

根本没有做任何事情。

令人惊讶的是,如果我添加:

<Style x:Key="{x:Type ComboBoxItem}" TargetType="ComboBoxItem">
    <Setter Property="SnapsToDevicePixels" Value="true"/>
    <Setter Property="OverridesDefaultStyle" Value="true"/>
    <Setter Property="Foreground" Value="Red"/>
</Style>

同一组合框内的comboBoxItems将正确获取红色前景色。

所以基本上,我不能在我的dataGrid中设置组合框的样式,但是我可以在那些相同的组合框中设置comboBoxItem的样式。

非常令人惊讶......

有没有人知道这里发生了什么以及如何解决我的问题?

感谢

1 个答案:

答案 0 :(得分:1)

究竟应该做什么? x:Key="{x:Type ComboBox}"

如果要将样式应用于子树中的所有控件,则不应指定键。

修改:要将样式应用于组合框,您必须调整属性DataGridComboBoxCotlumn.ElementStyleDataGridComboBoxColumn.EditingElementStyle