我想在按下時改變ToggleButton的顏色,並保持該顏色,直到再次按下。目前鼠標懸停按鈕後鼠標離開切換按鈕後會改變顏色。我拿走了鼠標懸停的顏色變化,這讓我可以將顏色設置爲Checked狀態,但我不想失去鼠標懸停效果。有沒有辦法兼得?我創建了自己的擴展器,教我自己創建控件,但看不出如何同時使用鼠標懸停和按下的顏色,在我的示例中,只有當按鈕未被點擊/檢查時,纔會重置statys,mouseover。我正在關閉此ToggleButton樣式:http://msdn.microsoft.com/en-us/library/cc296245(v=vs.95).aspxToggleButton MouseOver選中按下的問題
回答
This MSDN Link 的說明部分的權利要求下:
的ControlTemplate作者的VisualState對象到VisualStateGroup在的ControlTemplate來指定控制的視覺行爲。你在同一個VisualStateGroup中放置彼此互斥的狀態。例如,CheckBox有兩個VisualStateGroup對象。其中一個包含Normal,MouseOver,Pressed和Disabled狀態。另一個包含狀態,Checked,UnChecked和Indeterminate。 CheckBox可以同時處於MouseOver和UnChecked狀態,但它不能同時處於MouseOver和Pressed狀態。
我對silverlight相當陌生,但它看起來像你將不得不使用第二個控件,如邊框或矩形,不知道這是否是一個選項,但你也可以設置它來更改邊框刷在鼠標上的顏色。
觸發器的順序很重要。此樣式按您指定的方式工作。
<Style x:Key="{x:Type ToggleButton}" TargetType="{x:Type ToggleButton}">
<Setter Property="Foreground" Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border Name="Border" BorderThickness="1" Background="Gray" BorderBrush="Gray">
<ContentPresenter Name="ContentHost" Margin="8,3" HorizontalAlignment="Center" VerticalAlignment="Center" RecognizesAccessKey="true" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Background" Value="Yellow" />
<Setter TargetName="Border" Property="BorderBrush" Value="Yellow" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Border" Property="Background" Value="Red" />
<Setter TargetName="Border" Property="BorderBrush" Value="Red" />
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="Border" Property="Background" Value="Green" />
<Setter TargetName="Border" Property="BorderBrush" Value="Green" />
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="Border" Property="Opacity" Value="0.25" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
這個工作在SilverLight中嗎?或者只是WPF? – Terco
@Wallstreet如果你以什麼方式展開觸發器的順序很重要,我也會很感激。 – StephenT
@Bob:不,這純粹是一個WPF的答案,在Silverlight中不起作用。 – AnthonyWJones
- 1. MouseOver標題問題
- 2. 問題與Android togglebutton
- 3. MarkerWithLabel mouseOver問題
- 4. WPF樣式按鈕MouseOver問題
- 5. 水平下拉菜單MouseOver問題
- 6. WPF Expander MouseOver問題
- 7. jquery mouseover/mouseout問題
- 8. Mouseover和Mouseout問題
- 9. MouseOver on ToggleButton彈出一個文本
- 10. Wpf Expander togglebutton mouseover變爲透明
- 11. 自定義ToggleButton setChecked(..)問題
- 12. WPF ToggleButton背景問題
- 13. WPF ToggleButton IsChecked綁定問題
- 14. Mouseover的簡單Css問題
- 15. 當按下togglebutton時Wpf ToggleButton更改邊框背景
- 16. KineticJS中Mouseover事件的問題
- 17. Safari/Chrome中的MouseOver MouseOut問題
- 18. Jquery Mousedown和Mouseover問題
- 19. Jquery mouseover和mouseout問題
- 20. jQuery閃爍mouseOver問題
- 21. WPF ToggleButton與檢查+按下狀態
- 22. 按下toggleButton時增加DonutProgress/CircleProgress?
- 23. 在圖像上方的按鈕,jQuery的mouseover mouseout問題
- 24. ToggleButton checked
- 25. Android ToggleButton暫停/恢復問題
- 26. 使用ToggleButton時遇到問題
- 27. 切換按鈕的問題
- 28. ToggleButton未碰到未選中
- 29. Mouseover/mouseout +:不是jQuery的問題
- 30. JavaScript的mouseover圖像交換問題
你能描述一下你真正想要的效果嗎?默認模板通過使用漸變的方向反饋選中的狀態。如果你不使用那個按鈕被選中並且鼠標結束時你想要什麼外觀? – AnthonyWJones
您遇到與此問題相同的問題:http://stackoverflow.com/questions/3596026/custom-styled-listbox-how-can-i-keep-the-style-for-a-selected-item/ 3596570#3596570 – Denis