2012-05-28 7 views
4

Je dois mettre en forme des liens hypertexte dans le contrôle DataGrid WPF4 (ils apparaissent dans des colonnes de type DataGridHyperlinkColumn). J'ai beaucoup de DataGrids dans le projet et je voudrais appliquer le style de lien hypertexte à chacun d'entre eux.Liens hypertexte de style WPF dans DataGrids

J'ai trouvé ce Q & A: WPF Style DataGridHyperlinkColumn et créé le style pour le contrôle HyperLink:

<Style TargetType="{x:Type Hyperlink}"> 
    <Setter Property="TextDecorations" Value="" /> 
</Style> 

Il fonctionne très bien, mais évidemment elle affecte aussi tous les autres hyperliens, par exemple. dans

<TextBlock> 
    <Hyperlink NavigateUri="http://www.google.co.in">Click here</Hyperlink> 
</TextBlock> 

Comment puis-je cibler uniquement les liens hypertexte dans DataGrids? Dans la syntaxe CSS, il serait quelque chose comme

DataGrid Hyperlink {TextDecorations: ""; } 

Répondre

3

En raison de l'héritage de la valeur de la propriété toutes les instances de liens hérite du style que vous avez créé parce que vous n'avez pas utilisé x: attribut clé.

Vous pouvez ajouter x:Key attribut:

<Style TargetType="{x:Type Hyperlink}" x:Key="HyperlinkStyle1"> 
    <Setter Property="TextDecorations" Value="" /> 
</Style> 

en utilisant ce que vous pouvez faire référence à cette de vos contrôles comme ci-dessous:

<Hyperlink NavigateUri="http://www.google.co.in" Style={StaticResource HyperlinkStyle1}>Click here</Hyperlink> 
+0

Je suppose alors que l'application d'un seul ** style personnalisé ** pour les instances de liens qui ont ** DataGrid parmi ses ancêtres ** n'est pas possible. Merci pour la réponse :) –

+0

@buli anytime dude;) –

+0

@buli - Vous pouvez mettre un style sans clé dans les ressources de la grille de données, puis seulement les liens dans la grille de données auront le style, d'autres liens auront le style par défaut . – XAMeLi