WPF: Trigger für Selectieren von TextBlöcken

11/05/2009 - 15:23 von Alexander Mueller | Report spam
Hallo

ich verwende ein WPF-Toolkit-DataGrid. In (fast) allen Columns sind
Textblock-Controls an die Spalten gebunden (als Resourcen)
Für die Textblöcke gibt es eine DataTrigger, der die Textfarbe
(Foreground) auf "Gray" umstellt.

Wenn man jetzt ein solche Zeile im Grid selektiert/markiert, und die
Markierungsfarbe ist vom System aus dunkelblau, dann wird
die Textfarbe nicht automatisch auf Weisss gesetzt, sondern bleitbt
grau. Der Effekt mankann nicht lesen, was im Textblock steht.

Ich will das jetzt selbst dazu programmieren. Mein erster Einsatz ist
wei folgt:

<Style TargetType="{x:Type TextBlock}"
x:Key="TextBlockInColumnLfsBearbeitenBase">
<Style.Triggers>
<DataTrigger Binding="{Binding ShowDisabled}"
Value="True">
<Setter Property="Foreground" Value="Gray" />
</DataTrigger>
<MultiTrigger>
<MultiTrigger.Conditions >
<Condition Property="Selector.IsSelectionActive"
Value="True" />
<Condition Property="FontStyle" Value="Italic" />
</MultiTrigger.Conditions>
<Setter Property="Foreground" Value="White" />
</MultiTrigger>
</Style.Triggers>
</Style>

Dies bewirkt aber sonderbarerweise, dass ALLE Textblöcke, die diesen
Style verwenden, plötzlich weisse
Schrift haben, nciht nur diejenigen für die gilt:
Selector.IsSelectionActive und FortnSytsel Italic

Hat einer eine Ahnung, wie und was ich da àndern sollte?
Also das Ziel ist den Texblöcken einer Gridzeile weissen Foregrond zu
verpassen, sobald
eine Zeile im Grid selektiert wird

MfG,
Alex
 

Lesen sie die antworten

#1 Alexander Mueller
11/05/2009 - 18:58 | Warnen spam
On 11 Mai, 15:23, Alexander Mueller wrote:

Hallo ihr Schnukkis

wenn man nicht immer alles selber machen müsste ... ;-)

[Textfarbe in WPF-TextBlock wenn übergeordnete DataRidRow selektiert ist]



Also folgende XAML-Style triggert, wenn eine WPF-DataGridRow
selektiert wird,
eine weisse Textfarbe in den darin befindlichen selektierten
Textblöcken (die an diesen Style binden lantürlich):

<Style TargetType="{x:Type TextBlock}" x:Key="TextSelektionWhite">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource
FindAncestor, AncestorType={x:Type tk:DataGridRow}}, Path=IsSelected}"
Value="True">
<Setter Property="Foreground" Value="White" />
</DataTrigger>
</Style.Triggers>
</Style>

wobei tk: auf dern namespace "http://schemas.microsoft.com/wpf/2008/
toolkit" verweist


Tja, wieder was gelernt, hoffe es kann findet weitere Verwendung

MfG,
Alex

Ähnliche fragen