我試圖在鼠標懸停在按鈕上時更改默認邊框顏色,但無法使其工作。我以爲這會工作正常,但顯然它不:<Button> <Button.Resources> <Color x:Key="ControlMouseOverColor">somecolor</Color> </Button.Resources> </Button>
有沒有辦法做到這一點?鼠標懸停按鈕時無法更改邊框顏色
0
A
回答
0
正常的解決方案,這是WPF屬性觸發器:
<Button>
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="BorderBrush" Value="Black"></Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Red"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
屬性觸發器的設計,當條件爲真才反應過來,不過當條件爲假恢復其原來的狀態。所以我們在這裏說:當IsMouseOver屬性成爲true時,將定義的按鈕的邊框刷設置爲紅色。當條件變爲假時,它會變回黑色(我不確定邊界畫筆的默認顏色是什麼,因此您可以刪除第4行)
1
這是您需要執行的其中一種情況在WPF中完成一些簡單的事情有點複雜:)。實際上,您需要覆蓋Button控件的ControlTemplate,因爲鼠標位於按鈕上方時的邊框顏色由默認的ControlTemplate確定。下面是一個帶有默認CotrolTemplate的按鈕,減去IsMouseOver setter設置爲紅色:
<Button>
<Button.Template>
<ControlTemplate TargetType="{x:Type ButtonBase}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsDefaulted" Value="True">
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFBEE6FD"/>
<Setter Property="BorderBrush" TargetName="border" Value="Red"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFC4E5F6"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF2C628B"/>
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFBCDDEE"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF245A83"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" TargetName="border" Value="#FFF4F4F4"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FFADB2B5"/>
<Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="#FF838383"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
Click
</Button>
相關問題
- 1. UWP按鈕在鼠標懸停時更改顏色
- 2. 將鼠標懸停在按鈕上的文本顏色更改
- 3. 鼠標懸停更改圖片顏色
- 4. 更改鼠標懸停的顏色svg
- 5. 使用鼠標懸停時改變文字顏色的svg多邊形按鈕?
- 6. 更改按鈕懸停顏色在VB.net
- 7. CSS更改按鈕懸停顏色
- 8. 銫多邊形在鼠標懸停時改變顏色
- 9. 懸停/鼠標懸停更改顏色和比例?
- 10. 如何在鼠標懸停時更改「fa圖標」的顏色?
- 11. 當鼠標沒有懸停時,按鈕背景顏色丟失
- 12. flex,當鼠標懸停在按鈕上時,更改鼠標懸停/跳出時的按鈕圖像
- 13. 無法獲得在鼠標懸停時更改的背景顏色
- 14. jqplot更改鼠標懸停時圖形的顏色
- 15. 如何更改鼠標懸停時的多行文字顏色
- 16. 在PowerPoint中鼠標懸停時更改形狀顏色的宏
- 17. jquery更改div的背景顏色時鼠標懸停
- 18. 單擊和鼠標懸停時更改元素的顏色
- 19. 如何將鼠標懸停在div ID上時更改顏色?
- 20. 懸停時不能更改元素的邊框顏色
- 21. Html,css:在懸停時更改行的邊框顏色
- 22. 在懸停時製作邊框和箭頭更改顏色
- 23. XNA/XAML在鼠標懸停上動畫邊框顏色
- 24. 更改懸停按鈕上的字體圖標顏色
- 25. 懸停時的邊框顏色變化
- 26. 改變懸停的按鈕顏色
- 27. 如何在懸停時更改按鈕的顏色?
- 28. 更改懸停時的框顏色和文字顏色?
- 29. 無法更改佈局邊框顏色
- 30. QComboBox無法更改邊框顏色
我不相信這會工作,因爲ControlTemplate的觸發器優先。 – Rowbear