代码之家  ›  专栏  ›  技术社区  ›  clintr

当项目是前一个项目的前缀时,如何在wpf组合框中选择该项目?

  •  1
  • clintr  · 技术社区  · 7 年前

    主窗口。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>
    

    主窗口。xaml。反恐精英:

    using System.Windows;
    
    namespace DemoComboBoxProblem
    {
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
    
                CB0.Text = "CR";
                CB1.Text = "AA";
            }
        }
    }
    

    我想通过编程选择CB0中的项目“CR”和CB1中的项目“AA”。

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

    谢谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   Dani    7 年前

    尝试此操作,将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";