Misalnya, Facebook memiliki teks petunjuk "Pencarian" di kotak teks Pencarian saat kotak teks kosong.
Bagaimana cara mencapai ini dengan kotak teks WPF ??
.net
wpf
user-interface
textbox
Louis Rhys
sumber
sumber
Jawaban:
Anda dapat melakukannya dengan lebih mudah dengan a
VisualBrush
dan beberapa pemicu diStyle
:Untuk meningkatkan kegunaan kembali ini
Style
, Anda juga dapat membuat satu set properti terlampir untuk mengontrol teks spanduk isyarat sebenarnya, warna, orientasi dll.sumber
Ini adalah solusi sederhana saya, diadaptasi dari Microsoft ( https://code.msdn.microsoft.com/windowsapps/How-to-add-a-hint-text-to-ed66a3c6 )
sumber
IsHitTestVisible="False"
bagaimana dengan menggunakan materialDesign HintAssist? Saya menggunakan ini yang juga Anda dapat menambahkan petunjuk mengambang juga:
Saya menginstal Desain Material dengan Paket Nuget ada panduan instalasi di tautan dokumentasi
sumber
Lakukan di belakang kode dengan menyetel warna teks awalnya menjadi abu-abu dan menambahkan penangan acara untuk mendapatkan dan kehilangan fokus keyboard.
Kemudian penangan acara:
sumber
Anda harus membuat kontrol khusus dengan mewarisi kotak teks. Tautan di bawah ini memiliki contoh yang sangat baik tentang sampel kotak teks pencarian. Tolong lihat ini
http://davidowens.wordpress.com/2009/02/18/wpf-search-text-box/
sumber
Anda dapat melakukannya dengan cara yang sangat sederhana. Idenya adalah untuk menempatkan Label di tempat yang sama dengan kotak teks Anda. Label Anda akan terlihat jika kotak teks tidak memiliki teks dan tidak memiliki fokus.
Bonus: Jika Anda ingin memiliki nilai default untuk textBox Anda, pastikan setelah mengaturnya saat mengirimkan data (misalnya: "InputText" = "PlaceHolder Text Here" jika kosong).
sumber
Pendekatan lain ;-)
ini juga bekerja dengan
PasswordBox
. Jika ingin menggunakannya denganTextBox
, cukup tukarPasswordChanged
denganTextChanged
.XAML:
CodeBehind:
sumber
Saya pernah mengalami situasi yang sama, saya menyelesaikannya dengan cara berikut. Saya hanya memenuhi persyaratan kotak petunjuk, Anda dapat membuatnya lebih interaktif dengan menambahkan efek dan hal-hal lain pada acara lain seperti fokus, dll.
KODE WPF (Saya telah menghapus gaya agar dapat dibaca)
Kode C #
sumber
Solusi lain adalah dengan menggunakan toolkit WPF seperti MahApps.Metro. Ini memiliki banyak fitur bagus, seperti tanda air kotak teks:
Controls:TextBoxHelper.Watermark="Search..."
Lihat http://mahapps.com/controls/textbox.html
sumber
Saya menggunakan acara fokus yang didapat dan hilang:
Ini berfungsi dengan baik, tetapi teksnya masih berwarna abu-abu. Perlu dibersihkan. Saya menggunakan VB.NET
sumber
sumber
Itu pendapat saya:
Kebanyakan jawaban lain termasuk yang teratas memiliki kekurangan menurut saya.
Solusi ini berfungsi dalam semua keadaan. XAML murni, mudah digunakan kembali.
sumber
Saya melakukannya dengan
VisualBrush
dan beberapa pemicu dalamStyle
disarankan oleh:sellmeadog
.@sellmeadog: Aplikasi berjalan, bt Desain tidak memuat ... Kesalahan berikut muncul: Referensi jenis ambigu. Jenis bernama 'StaticExtension' muncul di setidaknya dua ruang nama, 'MS.Internal.Metadata.ExposedTypes.Xaml' dan 'System.Windows.Markup'. Pertimbangkan untuk menyesuaikan atribut XmlnsDefinition assembly. sedang menggunakan .net 3.5
sumber
<Trigger Property="Text" Value="{x:Static sys:String.Empty}">
ke<Trigger Property="Text" Value="">
Untuk WPF, tidak ada cara. Anda harus menirunya. Lihat contoh ini . Sekunder (solusi tidak stabil) adalah menjadi tuan rumah kontrol pengguna WinForms yang mewarisi dari TextBox dan mengirim pesan EM_SETCUEBANNER ke kontrol edit. yaitu.
Juga, jika Anda ingin menjadi tuan rumah pendekatan kontrol WinForm, saya memiliki kerangka kerja yang sudah menyertakan implementasi ini yang disebut Kerangka Kerja BitFlex, yang dapat Anda unduh secara gratis di sini .
Berikut adalah artikel tentang BitFlex jika Anda menginginkan informasi lebih lanjut. Anda akan mulai menemukan bahwa jika Anda ingin memiliki kontrol gaya Windows Explorer yang umumnya tidak pernah keluar dari kotak, dan karena WPF tidak bekerja dengan pegangan umumnya Anda tidak dapat menulis pembungkus mudah di sekitar Win32 atau kontrol yang ada seperti Anda bisa dengan WinForms.
Tangkapan layar:
sumber