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>

私の見解の1つでは、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>

基本的に、70に設定したいフォントサイズを除いて、MyStyles.xamlのXamDatagridのスタイルで定義されているすべてのものを保持したいと思います。

私はそれを機能させることができないようです。上記では、フォントは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 に答える