我在執行如下組合框自動完成。自動完成工作正常。我面臨的唯一問題是,我希望我的SelectedItems顯示爲ItemNumber[space]ItemDescription
。目前,當我從自動完成中選擇它時,它只顯示ItemNumber。你們可以修改下面的現有代碼嗎?WPF組合框的SelectedItem從自動完成
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;
}
}
填充材料
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的組合框,其中MaterialNumberLegacy和MaterialDescription屬性來自哪裏?自動填充到底意味着什麼? –
@NovitchiS 我已經編輯我上面的代碼,包括我如何填充組合框。我還更新了XAML以使用我使用的正確屬性。 那麼將在自動完成功能中顯示在組合框中的文本將有所不同。當我在組合框中選擇一個項目時,刪除了組合框中的自動完成設置,它顯示ItemNumber和ItemDescription。但是,如果我的組合框中存在自動完成設置,則只有ItemNumber會顯示在組合框中。 您可以查看我附上的供參考的上述圖片。 – klaydze