Question Comment créer un style basé sur le style DataGrid par défaut?


J'ai un contrôle personnalisé qui étend DataGrid. On l'appelle ExtendedDataGrid. Je veux donner du style pour ExtendedDataGrid c'est la même chose que DataGrids style sauf qu'il change le modèle. J'ai essayé quelque chose comme ça:

<Style TargetType="{x:Type MyControls:ExtendedDataGrid}" BasedOn="{StaticResource {x:Type DataGrid}}">
    <Setter Property="Template">
    ...
    </Setter>
</Style>

Mais il dit que la ressource n'est pas trouvée.

Donc j'essaye:

<Style TargetType="{x:Type MyControls:ExtendedDataGrid}" BasedOn="{StaticResource {ComponentResourceKey ResourceId=DataGridStyle, TypeInTargetAssembly={x:Type DataGrid}}}">
    <Setter Property="Template">
    ...
    </Setter>
</Style>

Mais ça ne marche pas non plus ... Alors qu'est-ce que je fais?


22
2018-02-13 18:07


origine


Réponses:


Bien mystère est résolu :)

Mon premier code ci-dessus fonctionne réellement:

<Style TargetType="{x:Type MyControls:ExtendedDataGrid}" BasedOn="{StaticResource {x:Type DataGrid}}">
    <Setter Property="Template">
    ...
    </Setter>
</Style>

Je pensais qu'il ne fonctionnait pas parce que VS (ou Resharper) affichait une erreur dans mon code disant que la ressource n'était pas trouvée ... Bug dans VS (ou Resharper) :(


45
2018-02-13 18:25



Si vous créez un style avec un   Propriété TargetType et la baser sur   un autre style qui définit également un   Propriété TargetType, le type cible   du style dérivé doit être le même   comme ou être dérivé du type de la   style de base.

Votre grille hérite de DataGrid, non?


2
2018-02-13 18:15