토글 버튼을 눌렀을 때 색상이 변경되도록 스타일을 지정하고 다시 누를 때까지 색상을 유지하려고합니다. 현재 마우스 오버는 버튼을 누른 후 마우스가 토글 버튼을 벗어나면 색상을 다시 변경합니다. 마우스 오버 색상 변경을 취소하고 Checked 상태에서 색상을 설정할 수있게했지만 마우스 오버 효과를 잃고 싶지 않습니다. 둘 다 가질 수있는 방법이 있습니까? 나 자신의 확장기를 만들었습니다. 컨트롤을 만드는 것에 대해 가르쳐 줬지만, mouseover와 눌려진 색을 모두 가지는 방법을 알아 내지 못합니다.이 예제에서는 mouseover가 버튼을 클릭/체크하지 않은 경우에만 재설정해야합니다. 이 ToggleButton 스타일을 사용하고 있습니다. http://msdn.microsoft.com/en-us/library/cc296245(v=vs.95).aspxToggleButton MouseOver 선택된 질문을 확인했습니다.
답변
This MSDN Link 하십시오의 ControlTemplate에서 VisualStateGroup에
의 ControlTemplate 작성자 VisualState 오브젝트 제어의 시각적 동작을 지정한다. 같은 VisualStateGroup에 서로 배타적 인 상태를 놓습니다. 예를 들어 CheckBox에는 두 개의 VisualStateGroup 객체가 있습니다. 하나는 Normal, MouseOver, Pressed 및 Disabled 상태를 포함합니다. 다른 하나는 State, Checked, UnChecked 및 Indeterminate를 포함합니다. CheckBox는 MouseOver 및 UnChecked 상태 일 수 있지만 동시에 MouseOver 및 Pressed 상태 일 수는 없습니다.
실버 라이트는 상당히 익숙하지 만 테두리 또는 사각형과 같은 두 번째 컨트롤을 사용해야 할 수도 있지만이 옵션이 맞는지는 확실하지 않지만 테두리 브러시를 변경하도록 설정할 수도 있습니다 마우스 위에 색상.
트리거 순서는 중요합니다. 이 스타일은 지정한대로 작동합니다. 상기 설명 부분 주장하에
<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. AirPlane ToggleButton?
- 2. WPF 리본 : ToggleButton 그룹?
- 3. Android ToggleButton 표시기
- 4. 이미지가있는 Silverlight ToggleButton
- 5. 위젯에서 ToggleButton 사용?
- 6. WPF ToggleButton 및 DelegateCommand
- 7. jQuery를 사용하여 라디오 버튼을 확인했습니다.
- 8. jquery의 이름으로 라디오 버튼을 확인했습니다.
- 9. 자바 스크립트 : ASP.NET의 리피터가있는 함수를 확인했습니다.
- 10. jquery는 선택된 단어를 가져옵니다.
- 11. jquery mouseover
- 12. 변경 가능한 배경색이있는 Android Togglebutton?
- 13. Android ToggleButton 크래시 (리소스 NullPointerException)
- 14. ToggleButton 체크 된 이벤트 처리
- 15. check_box_tag는 기본적으로 나를 기억하기 위해 확인했습니다.
- 16. Html.CheckBoxFor()에서 ASP.Net MVC 2의 문제를 확인했습니다.
- 17. iPhone 게임 성명을 50 포인트마다 확인했습니다.
- 18. Python에서 특정 줄에 대한 데이터 파일을 확인했습니다.
- 19. iPhone/iPad 이메일 클라이언트가 구성되었거나 유효한지 확인했습니다.
- 20. WHILL 개체 참조가 NullReferenceException을 일으키는 것을 확인했습니다.
- 21. jquery mouseover/mouseout problem
- 22. Limit Ajax mouseover
- 23. javascript mouseOver code
- 24. WPF ListView MouseOver 항목
- 25. C# 서식있는 상자 MouseOver
- 26. MouseOver 이벤트가 교대로 누락되었습니다.
- 27. 플렉스 패널로 mouseover
- 28. PrototypeJS mouseover menu
- 29. Pchart with mouseover
- 30. mouseoverripitem에 대한 mouseover 이벤트
실제로 원하는 효과를 설명 할 수 있습니까? 기본 템플리트는 그라디언트의 방향을 사용하여 선택된 상태를 피드백합니다. 단추를 모두 선택하고 마우스가 위에있을 때 원하는 모양을 사용하지 않으십니까? – AnthonyWJones
이 질문과 같은 문제가 발생했습니다. http://stackoverflow.com/questions/3596026/custom-styled-listbox-how-can-i-keep-the-style-for-a-selected-item/ 3596570 # 3596570 – Denis