استفاده از خاصیت AutoComplete در کمبوباکس در WPF
سلام توی سی شارپ WPF چطور میشه اطلاعات (آیتم ها) یک کمبوباکس رو بر اساس یک متن فیلتر کرد؟
استفاده از خاصیت AutoComplete در کمبوباکس در WPF
به صورت پیش فرض خاصیت AutoComplete در کمبوباکس در WPF وجود نداره. شاید دیده باشید توی بعضی از سایت ها مثلا شما در بخش جستجو یک متنی رو وارد می کنید و متن های مشابه رو خودش پیشنهاد میده و احتمالا می خواید چنین کاری رو انجام بدید.
یه سری راه حل ها برای این کار وجود داره.
روش اول :
روش اول این هست که توی دستورات xaml دو خاصیت زیر رو بنویسید :
1-IsTextSearchEnabled = true.
2-IsEditable = true.
با خاصیت IsEditable میتونید توی کمبوباکس متن وارد کنید و با خاصیت IsTextSearchEnable هم متن وارد شده در آیتم های کمبوباکس جستجو میشه.
مثال :
<ComboBox x:Name="cmb_status" IsEditable="True" IsTextSearchEnabled="True"></ComboBox>
WPF Combobox with auto-complete/auto-filter
روش دوم :
اگر روش اول رو نمی خواهید انجام بدید میتونید فقط خاصیت IsEditable رو فعال کنید تا کاربر بتونه اطلاعاتی رو تایپ کنه. حالا هر چیزی که تایپ میشه باید مقدارش رو از طریق خاصیت TextChanged به سمت سرور بفرستید و اطلاعات رو بر طبق متن وارد شده فیلتر کنید و نمایش بدید. (دقت کنید این روش بار زیادی رو روی سرور وارد میکنه. چون اگر کاربری مرتبا یه سری متن رو تایپ کنه و حذف کنه تعداد دفعات زیادی باید اطلاعات به سمت سرور بره و نتیجه دریافت بشه از سمت دیتابیس)
این کار در سوال زیر (که ظاهرا سوال خودتون هم هست) گفته شده
جستجو متن در آیتم های کمبوباکس سی شارپ WPF
روش سوم :
در روش بعدی میتونید اطلاعات رو داخل یک List نگهداری کنید و در واقع این لیست رو فیلتر کنید. دقت کنید که در این روش هم به دلیل اینکه این لیست باید به صورت Public تعریف بشه و مادامی که فرم شما فعال هست مقادیرش حفظ بشه بنابراین یک باری روی سرور شما خواهد داشت.
public partial class win_report : Window
{
dynamic myList = null;
private void fillcombo()
{
var myList = database.Customers.Select(c => new {
c.CustomerName,
c.CustomerID
}).ToList();
}
}
در دستور بالا متغیری به نام myList داریم که CustomerName و CustomerID رو درون خودش داره. این متغیر مقادیر شما رو داره و به جای فیلتر اطلاعات و واکشی اطلاعات از دیتابیس میتونید این متغیر رو هر بار فیلتر کنید و اطلاعات رو نمایش بدید. (البته ممکنه نیاز به کمی کار داشته باشه چون خودم کامل تست نکردم ولی این روش جواب میده)
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول