Dot-Net
在滑鼠懸停時更改周圍邊框的樣式
我周圍有
Grid一個。Border滑鼠懸停在 上時Grid,我想更改 上的樣式Border。我該怎麼做呢?這是我嘗試過的,到目前為止沒有任何成功:<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>在嘗試建構此 XAML 時,我收到錯誤
無法在樣式設置器上設置 TargetName 屬性。
但我想不出任何其他方法來做到這一點。幫助將不勝感激。使用任何程式碼隱藏都是不可能的。
您需要執行以下操作:
- 從邊框定義中刪除 BorderBrush。觸發器可以覆蓋樣式中設置器設置的屬性,但不能覆蓋標籤中直接設置的屬性。
- 將觸發器放入邊框而不是網格(請參閱其他人提供的範例)。
- 關於 Grid 上的命中測試:在網格後面放置一個透明框,以便始終擷取 MouseOver:
第 3 點的程式碼範例:
<Grid> <Rectangle Fill="Transparent" /><!-- make sure that the mouse is always over "something" --> <Grid Name="myGrid"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <TextBlock Name="myText">sadasdsa</TextBlock> </Grid> </Grid>