wpf: komutla devre dışı bırakıldığında araç ipucu nasıl gösterilir?


162

Düğmeler durumu ne olursa olsun bir araç ipucu göstermeye çalışıyorum, ama bu hile yapmak gibi görünmüyor:

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

Komut nedeniyle düğme devre dışı bırakıldığında araç ipucunu nasıl gösterebilirim?

Not:

ToolTipService.ShowOnDisabled = "true" bir cazibe gibi çalışır. Bunun benim örneğimde çalışmamasının nedeni, düğmeyle ilişkilendirilen stilin kontrol şablonunu yeniden tanımlaması ve düğme devre dışı bırakıldığında düğmedeki isabet testini kapatmasıdır (IsHitTestVisible = false). Kontrol şablonundaki isabet testini yeniden etkinleştirmek, düğme devre dışı bırakıldığında araç ipucunun görünmesini sağladı.



ToolTipService.ShowOnDisabled kullanıyorum, ama çalışmıyor.
Marius

1
Sadece bu soruyu silin. Küçük bir test projesi yaptım ve ToolTipService.ShowOnDisabled gayet iyi çalışıyor.
Marius

15
Bu sorunun silinmediğine sevindim. Bir soruya / soruna hızlı ve doğru bir şekilde cevap verdi, bu da ilk etapta SO'ya gelmemizin kesin nedeni. Tembel (tm) Marius olduğun için teşekkürler. :-)
Jere.Jones

Affedersiniz, sadece devre dışı bırakıldığında gösterebilmemin bir yolu var mı?
advapi

Yanıtlar:



26

Bu, başlangıç ​​kodunuza eklemek için iyi bir yöntemdir

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

Bunun ne yaptığını açıklayabilir misiniz? Başlangıçta iyi bir yöntem olduğunu söylemek açıklamıyor.
Gizli Rabbi

Denetimden devralınan herhangi bir sınıf için, Denetim örneği devre dışı
bırakılsa

3
Kullanıcıların ipucu için en çok ihtiyacı olan ironik zaman kontrolü devre dışı bilmek istedikleri gibi neden kontrol devre dışıdır. Bu WPF'de zamanın büyük çoğunluğu yanlış olan bir varsayılana iyi bir örnektir. Bu yüzden değiştirmeye değer.
Contango

2

Araç ipucunu TÜM devre dışı Düğmeler ve Onay Kutuları için görünür yapın:

<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>

Daha BasedOn=...önce onay kutusuna veya düğmeye uygulanan diğer stilleri kaybetmenizi önler. Düğme veya onay kutusu için başka stiller kullanmazsanız, BasedOn=..parçaları kaldırabilirsiniz

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.