当wpf组合框是前一项的前缀时,如何选择它?

时间:2017-08-30 02:49:28

标签: c# wpf xaml combobox wpf-controls

我将从我的代码示例开始。它是一个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";
        }
    }
}

我想以编程方式选择项目&#34; CR&#34;在CB0和项目&#34; AA&#34;在CB1。

当我运行它时,CB0什么都不显示,并且(我假设)没有选择任何项目。 CB1正确显示并已选择&#34; AA&#34;。我认为这与&#34; CR&#34;作为&#34; CRLF&#34;的前缀。如果我改变了项目的顺序,我可以让它工作,但我想知道:在给定的顺序中使用它的正确方法是什么?

由于

1 个答案:

答案 0 :(得分:0)

试试这个,添加SelectedValuePath =&#34; Content&#34;组合框属性。

<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";