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.


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:



26

Ini adalah metode yang baik untuk ditambahkan ke kode startup Anda

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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.