wpf : 명령으로 버튼을 비활성화했을 때 툴팁을 표시하는 방법은 무엇입니까?


162

버튼 상태에 관계없이 툴팁을 표시하려고하지만 트릭을 수행하지 않는 것 같습니다.

<Button Command="{Binding Path=CommandExecuteAction}" 
        ToolTip="{Binding Path=Description}" ToolTipService.ShowOnDisabled="true"
        Style="{StaticResource toolbarButton}">
   <Image Source="{Binding Path=Icon}"></Image>
</Button>

명령으로 인해 버튼이 비활성화되어있을 때 툴팁을 표시하려면 어떻게해야합니까? CanExecute return false?

노트 :

ToolTipService.ShowOnDisabled = "true"는 매력처럼 작동합니다. 내 예제에서 이것이 작동하지 않는 이유는 버튼과 관련된 스타일이 컨트롤 템플릿을 재정의하고 버튼이 비활성화되어있을 때 버튼에서 적중 테스트를 해제했기 때문입니다 (IsHitTestVisible = false). 컨트롤 템플릿에서 적중 테스트를 다시 활성화하면 버튼이 비활성화되었을 때 툴팁이 나타납니다.



ToolTipService.ShowOnDisabled를 사용하고 있지만 작동하지 않습니다.
Marius

1
이 질문을 삭제하십시오. 나는 작은 테스트 프로젝트를했고 ToolTipService.ShowOnDisabled는 잘 작동합니다.
Marius

15
이 질문이 삭제되지 않은 것을 기쁘게 생각합니다. 그것은 내가 가진 질문 / 문제에 빠르고 정확하게 대답했습니다. Lazy (tm) Marius가되어 주셔서 감사합니다. :-)
Jere.Jones

실례합니다. 비활성화 된 경우에만 표시 할 수있는 방법이 있습니까?
advapi

답변:



26

이것은 시작 코드에 추가하는 좋은 방법입니다

ToolTipService.ShowOnDisabledProperty.OverrideMetadata(
    typeof(Control),
    new FrameworkPropertyMetadata(true));

이것이 무엇을 설명 할 수 있습니까? 시작시 좋은 방법이라고 설명하지 않습니다.
Stealth Rabbi

Control에서 상속되는 모든 클래스에 대해 Control 인스턴스가 비활성화 된 경우에도 툴팁이 표시됩니다.
sacha barber

3
컨트롤이 비활성화 된 이유 를 알고 싶어하기 때문에 컨트롤이 비활성화 된 경우 사용자가 툴팁을 가장 많이 필요로하는 것은 아이러니 한 일입니다 . 이것은 대부분의 시간에 맞지 않는 WPF의 기본값에 대한 좋은 예입니다. 따라서 변경할 가치가 있습니다.
Contango

2

비활성화 된 모든 버튼 및 확인란에 툴팁을 표시합니다.

<Window.Resources>
    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}>
        <Setter Property="ToolTipService.ShowOnDisabled" Value="true"/>
    </Style>
    <Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Type CheckBox}}>
        <Setter Property="ToolTipService.ShowOnDisabled" Value="true"/>
    </Style>
</Window.Resources>

이렇게 BasedOn=...하면 이전에 확인란이나 버튼에 적용된 다른 스타일을 잃어 버리지 않습니다. 버튼이나 확인란에 다른 스타일을 사용하지 않으면 BasedOn=..부품을 제거 할 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.