我有一个包含一些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的样式。
非常令人惊讶......
有没有人知道这里发生了什么以及如何解决我的问题?
感谢
答案 0 :(得分:1)
究竟应该做什么? x:Key="{x:Type ComboBox}"
如果要将样式应用于子树中的所有控件,则不应指定键。
修改:要将样式应用于组合框,您必须调整属性DataGridComboBoxCotlumn.ElementStyle
和DataGridComboBoxColumn.EditingElementStyle
。