当它是前一个项目的前缀时,我如何 select wpf 组合框中的一个项目?

How can I select an item in a wpf combobox when it is a prefix of a previous item?

我将从我的代码示例开始。这是一个 WPF 应用程序。

MainWindow.xaml:

<Window x:Class="DemoComboBoxProblem.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:DemoComboBoxProblem"
        mc:Ignorable="d"
        Title="MainWindow" Height="60" Width="200">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <ComboBox Name="CB0" Grid.Column="0" Width="60">
            <ComboBoxItem>CRLF</ComboBoxItem>
            <ComboBoxItem>CR</ComboBoxItem>
            <ComboBoxItem>LF</ComboBoxItem>
            <ComboBoxItem>LFCR</ComboBoxItem>
        </ComboBox>
        <ComboBox Name="CB1" Grid.Column="1" Width="60">
            <ComboBoxItem>CRLF</ComboBoxItem>
            <ComboBoxItem>AA</ComboBoxItem>
            <ComboBoxItem>BB</ComboBoxItem>
            <ComboBoxItem>LFCR</ComboBoxItem>
        </ComboBox>
    </Grid>
</Window>

MainWindow.xaml.cs:

using System.Windows;

namespace DemoComboBoxProblem
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            CB0.Text = "CR";
            CB1.Text = "AA";
        }
    }
}

我想以编程方式select CB0 中的项目 "CR" 和 CB1 中的项目 "AA"。

当我 运行 这样做时,CB0 什么都不显示,并且(我假设)其中没有任何项目 selected。 CB1 正确显示并已 selected "AA"。我认为这与 "CR" 作为 "CRLF" 的前缀有关。如果我改变项目的顺序,我可以让它工作,但我想知道:让它按照给定的顺序处理项目的正确方法是什么?

谢谢

试试这个,将 SelectedValuePath = "Content" 添加到组合框属性。

<ComboBox Name="CB0" Grid.Column="0" Width="60" SelectedValuePath="Content">
    <ComboBoxItem>CRLF</ComboBoxItem>
    <ComboBoxItem>CR</ComboBoxItem>
    <ComboBoxItem>LF</ComboBoxItem>
    <ComboBoxItem>LFCR</ComboBoxItem>
</ComboBox>

在代码中使用:

CB0.SelectedValue = "CR"; 
CB1.SelectedValue = "AA";