我在名为MyStyles.xaml的文件中定义了一种样式:
<Style TargetType="{x:Type igDP:XamDataGrid}">
<Setter Property="FontSize" Value="10" />
<Setter Property="FontFamily" Value="Arial" />
<EventSetter Event="CellUpdating" Handler="grid_CellUpdating"/>
</Style>
在我的一个视图中,我定义了一个XamDataGrid:
<igDP:XamDataGrid>
<igDP:XamDataGrid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MyProject.TheViews;component/Views/MyStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style TargetType="{x:Type igDP:XamDataGrid}" BasedOn="{StaticResource {x:Type igDP:XamDataGrid}}">
<Setter Property="FontSize" Value="70"/>
</Style>
</ResourceDictionary>
</igDP:XamDataGrid.Resources>
基本上,我想在MyStyles.xaml中保留XamDatagrid样式中定义的所有内容,但字体大小除外,我希望将其设置为70.
我似乎无法让它发挥作用。使用上面的内容,字体设置为70但我丢失了MyStyles中定义的其他设置(例如事件处理和字体系列)。
我在这里做错了什么?
答案 0 :(得分:1)
(从上面的评论中提取答案。)
为了覆盖这种风格,我建议如下:
在MyStyles.xaml
中定义2个样式:一个包含样式的命名样式,以及一个基于命名样式的未命名样式(这将是默认样式)
<Style x:Key="XamDataGridDefaultStyle" TargetType="{x:Type igDP:XamDataGrid}">
<Setter Property="FontSize" Value="10" />
<Setter Property="FontFamily" Value="Arial" />
<EventSetter Event="CellUpdating" Handler="grid_CellUpdating"/>
</Style>
<Style TargetType="{x:Type igDP:XamDataGrid}"
BasedOn="{StaticResource XamDataGridDefaultStyle}"/>
这将为所有视图定义所需的默认样式。
对于需要自定义的视图的资源,请定义以下覆盖:
<Style TargetType="{x:Type igDP:XamDataGrid}"
BasedOn="{StaticResource XamDataGridDefaultStyle}">
<Setter Property="FontSize" Value="70"/>
</Style>
您可能需要在MyStyles.xaml
的自定义视图资源中将StaticResource
作为合并字典引用。