У меня есть редактируемое поле со списком в WPF. который имеет список порядкового номера. Мне нужно реализовать приведенный ниже сценарий в моем коде. Пользователь может ввести начальный номер заказа, и система предложит номер закрывающего ордера, доступный в раскрывающемся списке.
Кто-нибудь может подсказать, как это сделать?
В моей модели просмотра я написал:
public void _fillREOrderNumbers()
{
List<FinishedReprintingOrderNumber> orders = _finishedProductReprintService.GetFinishedProductReprintbyOrder().ToList();
foreach (var item in orders)
{
ReOrders.Add(item);
}
}
Это загрузка номера заказа в раскрывающемся списке.
Просмотр или XAML:
<ComboBox x:Name = "cbOFab" HorizontalAlignment = "Left" Margin = "373,81,0,0"
VerticalAlignment = "Top" Width = "262" IsEditable = "True"
ItemsSource = "{Binding ReOrders, Mode=TwoWay}" DisplayMemberPath = "codOrder" SelectedItem = "{Binding
ReSelectedOrder}" Background = "{DynamicResource dgridRowColor}" />
До сих пор, Я могу указать номер заказа в поле со списком, но не знаю, как искать в нем.
Возможный дубликат Автозаполнение TextBox в WPF
Мне нужно использовать ComboBOX вместо TextBox ..
Вероятно, вы ищете IsTextSearchEnabled = "True"
kaspar: Я хочу, чтобы в моем поле со списком отображался номер заказа, введенный пользователем. Не полный список, который выбирается.
Также вы можете сделать следующее: добавить событие нажатия клавиши в поле со списком, которое будет проверять, какой номер был нажат, и обновлять выбранный элемент, или просто обновить полный источник элемента в модели представления на основе вашей логики. Пожалуйста, дайте мне знать, если вы знаете, как это сделать.
еще одна вещь, пользователь, начнет печатать заказ в каком-нибудь текстовом поле?





Таким образом я реализовал фильтрацию элементов в ComboBox.
Вот XAML:
<ComboBox
MinWidth = "200"
ItemsSource = "{Binding Path=Shops.View, RelativeSource = {RelativeSource TemplatedParent}}"
DisplayMemberPath = "NameExtended"
SelectedItem = "{Binding Path=SelectedShop, Mode=TwoWay, RelativeSource = {RelativeSource TemplatedParent}}"
IsTextSearchEnabled = "False"
IsEditable = "True"
IsDropDownOpen = "{Binding Path=ComboOpen, Mode=TwoWay, RelativeSource = {RelativeSource TemplatedParent}}"
StaysOpenOnEdit = "True"
Text = "{Binding Path=SearchText, Mode=TwoWay, RelativeSource = {RelativeSource TemplatedParent}}"
>
<i:Interaction.Triggers>
<i:EventTrigger EventName = "KeyUp">
<i:InvokeCommandAction
Command = "{Binding Path=FilterCommand, RelativeSource = {RelativeSource TemplatedParent}}"
/>
</i:EventTrigger>
</i:Interaction.Triggers>
Вам нужны все строки из IsTextSearchEnabled и ниже.
Когда вы нажимаете любую клавишу в поле со списком, оно открывается и фильтрует элементы в нем, используя свойство SearchText, привязанное к ComboBox.Text.
Вот код модели представления:
public string SearchText { get; set; }
private List<Shop> _shops;
protected void FilterShops()
{
ComboOpen = true;
if (!string.IsNullOrEmpty(SearchText))
{
Shops.UpdateSource(_shops.Where(s => s.NameExtended.ToLower().Contains(SearchText.ToLower())));
}
else
{
Shops.UpdateSource(_shops);
}
OnPropertyChanged("Shops");
}