Я реализую автозаполнение в ComboBox, как показано ниже. Автозаполнение работает отлично. Единственная проблема, с которой я столкнулся, я бы хотел, чтобы мои SelectedItems отображались как ItemNumber[space]ItemDescription
. В настоящее время он отображает только ItemNumber, когда я выбираю его из автозаполнения. Можете ли вы, ребята, обновить существующий код ниже.WPF ComboBox SelectedItem из Autocomplete
class ItemDetails
{
string _itemNumber;
string _itemDescription;
public string ItemNumber
{
get { return _itemNumber; }
set { _itemNumber = value; }
}
public string ItemDescription
{
get { return _itemDescription; }
set { _itemDescription = value; }
}
public ItemDetails() { }
public ItemDetails(string itemNo, string description)
{
_itemNumber = itemNo;
_itemDescription = description;
}
}
Populate Материал
private void InitMaterial()
{
List<ItemDetails> items = new List<ItemDetails>();
for (int i = 0; i <= 1000; i++)
{
items.Add(new ItemDetails(i.ToString(), "Item " + i.ToString()));
}
cbo1.ItemsSource = items;
}
XAML
<ComboBox x:Name="cboItemNoLegacy" HorizontalContentAlignment="Stretch"
TextSearch.TextPath="MaterialNumberLegacy"
ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True"
IsEditable="True"
SelectedItem="{Binding LegacyItemNumber, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, Mode=TwoWay, Converter={StaticResource MaterialMasterConverter}}"
SelectionChanged="cboItemNoLegacy_SelectionChanged">
<ComboBox.ItemContainerStyle>
<Style>
<Setter Property="Control.Padding" Value="0"></Setter>
<Style.Triggers>
<Trigger Property="ComboBoxItem.IsSelected" Value="True">
<Setter Property="ComboBoxItem.Background" Value="SkyBlue" />
</Trigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid Margin="0">
<Border Margin="5" BorderThickness="0" BorderBrush="SteelBlue"
CornerRadius="1">
<Grid HorizontalAlignment="Left">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock x:Name="tbSiteCode" FontWeight="Normal" Text="{Binding Path=ItemNumber}" Margin="0,0,7,0"></TextBlock>
<TextBlock Grid.Column="1" x:Name="tbSiteDesc" FontWeight="Normal" Text="{Binding Path=ItemDescription}" Margin="0,0,7,0"></TextBlock>
</Grid>
</Border>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
Итак, у вас есть список ItemDetails, привязанный каким-то образом ('ItemsSource =" {Binding} "') к ItemsSource для ComboBox, откуда берутся свойства MaterialNumberLegacy и MaterialDescription? Что именно означает автозаполнение в вашем случае? –
@NovitchiS Я редактировал мой код выше и включает в себя, как я заполняю поле со списком. Я также обновил XAML, чтобы использовать правильные свойства, которые я использовал. Ну текст, который будет отображаться в combobox, будет отличаться в функциональности автозаполнения. Когда я удаляю параметры автозаполнения в своем поле со списком, когда я выбираю элемент в поле со списком, он отображает ItemNumber и ItemDescription. Но, если в моем поле со списком есть настройки автозаполнения, в поле со списком будет отображаться только ItemNumber. Вы можете проверить приведенное выше изображение, которое я приложил для справки. – klaydze