wpf: bagaimana menampilkan tooltip ketika tombol dinonaktifkan oleh perintah?

162

Saya mencoba menunjukkan tooltip terlepas dari status tombol, tetapi ini sepertinya tidak berhasil:

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

Bagaimana saya bisa menampilkan tooltip ketika tombol dinonaktifkan karena command.CanExecute mengembalikan false?

catatan:

ToolTipService.ShowOnDisabled = "true" berfungsi seperti jimat. Alasan ini tidak berfungsi dalam contoh saya adalah karena gaya yang terkait dengan tombol mendefinisikan kembali controltemplate dan mematikan pengujian pada tombol ketika tombol dinonaktifkan (IsHitTestVisible = false). Mengaktifkan kembali pengujian-hit pada templat kontrol membuat tooltip muncul ketika tombol dinonaktifkan.

Marius
sumber
kemungkinan duplikat WPF Tooltip Visibility
OJ.
Saya menggunakan ToolTipService.ShowOnDisabled, tetapi tidak berfungsi.
Marius
1
Hapus saja pertanyaan ini. Saya melakukan proyek pengujian kecil dan ToolTipService.ShowOnDisabled berfungsi dengan baik.
Marius
15
Saya senang pertanyaan ini tidak terhapus. Itu dengan cepat dan akurat menjawab pertanyaan / masalah yang saya miliki, yang merupakan alasan tepat saya datang ke SO di tempat pertama. Terima kasih telah menjadi Malas (tm) Marius. :-)
Jere.Jones
Maaf, apakah ada cara saya bisa menunjukkannya hanya ketika dinonaktifkan?
advapi

Jawaban:

305

ToolTipService.ShowOnDisabled = "True"

Kishore Kumar
sumber
10
Referensi MSDN: msdn.microsoft.com/en-us/library/…
David
3
Ini berlaku dalam deklarasi xaml untuk objek tempat tooltip akan muncul, yaitu:<Button ToolTipService.ShowOnDisabled="True">...
mendukung Monica
26

Ini adalah metode yang baik untuk ditambahkan ke kode startup Anda

ToolTipService.ShowOnDisabledProperty.OverrideMetadata(
    typeof(Control),
    new FrameworkPropertyMetadata(true));
sacha tukang cukur
sumber
Bisakah Anda menjelaskan apa fungsinya? Mengatakan itu metode yang baik saat startup tidak menjelaskan.
Stealth Rabbi
Ini memastikan bahwa untuk kelas apa pun yang mewarisi dari Control, tooltips ditampilkan bahkan jika instance Control dinonaktifkan
sacha barber
3
Sangat ironis bahwa pengguna memiliki kebutuhan terbesar untuk tooltip ketika kontrol dinonaktifkan, karena mereka ingin tahu mengapa kontrol dinonaktifkan. Ini adalah contoh yang baik dari default di WPF yang salah sebagian besar waktu. Jadi ada baiknya mengubahnya.
Contango
2

Jadikan tooltip terlihat untuk SEMUA Tombol dan kotak centang yang dinonaktifkan:

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

The BasedOn=...mencegah Anda kehilangan setiap gaya lain yang telah diterapkan untuk kotak centang atau tombol sebelumnya. Jika Anda tidak menggunakan gaya lain untuk tombol atau kotak centang, Anda dapat menghapus BasedOn=..bagian - bagiannya

Blechdose
sumber