قبل از خواندن این مقاله، خواندن قسمت های قبلی مجموعه را به شدت توصیه می کنم.
- آموزش برنامه نویسی ویندوز جهانی از طریق C++ مدرن
- آموزش برنامه نویسی ویندوز جهانی از طریق C++ مدرن (کنترل دکمه)
- آموزش برنامه نویسی ویندوز جهانی از طریق C++ مدرن (Stackpanel)
- آموزش برنامه نویسی ویندوز جهانی از طریق C++ مدرن (CheckBox)
- آموزش برنامه نویسی جهانی ویندوز از طریق C++ مدرن (رادیو دکمه)
- آموزش برنامه نویسی جهانی ویندوز از طریق C++ مدرن (Combobox)
- آموزش برنامه نویسی ویندوز جهانی از طریق C++ مدرن (Border)
- آموزش برنامه نویسی ویندوز جهانی از طریق C++ مدرن (CommandBar)
- آموزش برنامه نویسی ویندوز جهانی از طریق C++ مدرن (SplitView)
در این مقاله قصد داریم با AutoSuggestBox در C++ مدرن آشنا شویم
جعبه پیشنهاد خودکار
مانند یک کنترل متنی است که در حین تایپ کردن، پیشنهاداتی را به کاربران ارائه می کند. بر اساس ورودی کاربر یک لیست پیشنهادات در کنترل نمایش داده می شود.
بیایید نحوه اجرای این کنترل و برخی از رویدادها و ویژگی های مهم را ببینیم.
این نمونه قرار است از روزهای هفته به عنوان لیست پیشنهادی استفاده کند
مجموعه را آماده کنید
رابط IVector<IInspectable>
IVector برای آماده سازی مجموعه استفاده می شود.
- IVector<IInspectable> autoCollection = single_threaded_vector<IInspectable>();
- autoCollection.Append(PropertyValue::CreateString(L"sunday"));
- autoCollection.Append(PropertyValue::CreateString(L"Monday"));
- autoCollection.Append(PropertyValue::CreateString(L"Tuesday"));
- autoCollection.Append(PropertyValue::CreateString(L"Wednesday"));
- autoCollection.Append(PropertyValue::CreateString(L"Thursday"));
- autoCollection.Append(PropertyValue::CreateString(L"Friday"));
- autoCollection.Append(PropertyValue::CreateString(L"saturday"));
مجموعه را به کنترل اختصاص دهید
منبع آیتم برای تولید محتوای آیتم های آیتم کنترل ها (داده ها) و تخصیص مجموعه به این ویژگی استفاده می شود و مجموعه به عنوان پیشنهاد به کاربر نشان می دهد.
- AutoSuggestBox autoBox;
- autoBox.ItemsSource(autoCollection);
![](http://pezhvak24.ir/dl/10kcor/cscd/article/learn-universal-windows-programming-via-modern-cpp-splitview-control2/Images/Auto.png)
متن تغییر کرد
رویداد تغییر متن فعال می شود، هنگامی که کاربر متن را وارد می کند، بر اساس متن، لیست پیشنهادات به روز می شود.
- void OnTextChanged(IInspectable const &sender, AutoSuggestBoxTextChangedEventArgs const args)
- {
- AutoSuggestBox autoBox = sender.as<AutoSuggestBox>();
auto userType = autoBox.Text(); - }
AutoSuggestionBoxTextChangeReason
این ویژگی برای یافتن دلیل تغییر متن استفاده می شود.
- UserInput: مقدار UserInput زمانی تنظیم می شود که کاربر متن را ویرایش کند
- SuggestionChosen: موارد در لیست انتخاب شده انتخاب شده است
- ProgrammaticChange: متن از طریق کد تغییر کرده است.
- void OnTextChanged(IInspectable const &sender, AutoSuggestBoxTextChangedEventArgs const args)
- {
- auto argsReason = args.Reason();
- switch (argsReason)
- {
- case AutoSuggestionBoxTextChangeReason::ProgrammaticChange:
- break;
- case AutoSuggestionBoxTextChangeReason::SuggestionChosen:
- break;
- case AutoSuggestionBoxTextChangeReason::UserInput:
- break;
- default:
- break;
- }
- AutoSuggestBox autoBox = sender.as<AutoSuggestBox>();
- auto userType = autoBox.Text();
- }
![](http://pezhvak24.ir/dl/10kcor/cscd/article/learn-universal-windows-programming-via-modern-cpp-splitview-control2/Images/AutoTextChange.jpg)
پیشنهاد انتخاب شد
هنگامی که کاربر پیشنهادی را در لیست پیشنهادات انتخاب می کند، مقدار پیشنهاد انتخاب شده کادر متن را به روز می کند.
رویداد Suggestionchanged زمانی فعال می شود که مقدار از لیست پیشنهاد انتخاب شود. مقدار انتخاب شده از ویژگی SelectItem در کلاس AutoSuggestBoxSuggestionChosenEventArgs خوانده می شود.
- void OnSuggestionChanged(IInspectable const &sender, AutoSuggestBoxSuggestionChosenEventArgs const args)
- {
- auto selectItem = args.SelectedItem().as<IPropertyValue>().GetString();
- AutoSuggestBox autoBox = sender.as<AutoSuggestBox>();
- }
![](http://pezhvak24.ir/dl/10kcor/cscd/article/learn-universal-windows-programming-via-modern-cpp-splitview-control2/Images/AutoSuggest.png)
درخواست ارسال شده
هنگامی که کاربر درخواستی را با کلید enter ارسال می کند یا از طریق دکمه query ارسال می کند، این رویداد فعال می شود
.