0

我在名为 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 中定义的其他设置(例如事件处理和字体系列)。

我在这里做错了什么?

4

1 回答 1

1

(从上面的评论中提取答案。)

为了覆盖样式,我建议以下内容:

在中定义 2 种样式MyStyles.xaml:一个包含样式的命名样式,以及仅基于命名样式的未命名样式(这将是默认样式)

<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才能工作。

于 2012-09-18T20:50:26.243 回答