Ändern Sie den Stil der umgebenden Rand auf der Maus über
Ich habe eine Grid
mit einem Border
um ihn herum. Beim mouse-over auf die Grid
möchte ich ändern Sie den Stil auf die Border
. Wie würde ich gehen über das tun dies? Dies ist, was ich versucht habe, ohne Erfolg bisher:
<Border Name="Border" BorderBrush="Transparent" BorderThickness="1" CornerRadius="2">
<Grid>
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="BorderBrush" Value="#FFB9D7FC" />
</Trigger>
</Style.Triggers>
</Style>
</Grid.Style>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
...
</Grid>
</Border>
Beim erstellen dieser XAML-Code, bekomme ich die Fehlermeldung
TargetName-Eigenschaft kann nicht festgelegt werden auf einen Stil-Setter.
aber ich kann mir nicht vorstellen, dass es eine andere Möglichkeit, dies zu tun. Hilfe wäre sehr geschätzt werden. Mit code-behind ist aus der Frage.
InformationsquelleAutor der Frage Alex | 2010-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie Folgendes tun:
Entfernen Sie die BorderBrush-von der Grenze der definition. Trigger überschreiben können Eigenschaften festlegen, die von setter in verschiedenen Stilen, aber nicht Eigenschaften, die direkt innerhalb des Tags.
Setzen Sie den Trigger in die Grenze, anstatt in das Raster (siehe die Beispiele, die die anderen zur Verfügung gestellt).
Hinsichtlich der Treffer-test auf der Raster: Legen Sie eine durchsichtige box hinter dem Gitter, so dass MouseOver ist immer gefangen:
Code-Beispiel für Punkt 3:
InformationsquelleAutor der Antwort Heinzi
Setzen Sie den Trigger direkt auf das Border-Objekt. Auch nicht die BorderBrush-an der Grenze-Objekt, sondern auch festlegen, mit dem trigger:
Auch, wenn Sie Schwierigkeiten haben, zu sehen, was die Auslöser sind, überprüfen Sie heraus das Debuggen von Triggern hier. Kann ziemlich hilfreich.
Hoffe, das hilft.
InformationsquelleAutor der Antwort RoelF
Was ist das?
InformationsquelleAutor der Antwort paolot
Verdammt, war das schwierig.
Wenn Sie möchten, dass der Auslöser nur auf dem Gitter, die Sie verwenden können, PyBinding zu befestigen, um das richtige Steuerelement. (Ich weiß nicht, wie dies zu tun, ohne PyBinding.)
InformationsquelleAutor der Antwort Jonathan Allen