2017-08-30 15 views
1

Je vais commencer par mon exemple de code. C'est une application WPF.Comment puis-je sélectionner un élément dans une liste déroulante wpf lorsqu'il s'agit d'un préfixe d'un élément précédent?

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

Je veux sélectionner programatically l'élément "CR" dans CB0 et l'élément "AA" dans CB1.

Lorsque je lance ceci, CB0 n'affiche rien et (je suppose) aucun élément n'y est sélectionné. CB1 s'affiche correctement et a sélectionné "AA". Je pense que cela a quelque chose à voir avec "CR" étant un préfixe de "CRLF". Je peux le faire fonctionner si je change l'ordre des articles, mais je me demande: quelle est la bonne façon de le faire fonctionner avec les articles dans l'ordre donné?

Merci

+0

Pourquoi voulez-vous le faire programatically? Vous pouvez le faire en XAML si vous le souhaitez. – CodingYoshi

+0

Vous pouvez définir dans XAML SelectedIndex dans ComboBox. Mais le meilleur moyen sera d'utiliser un pattern MVVM avec des bindings. – Bibop

+0

Avez-vous essayé d'utiliser 'CB0.SelectedValue =" CR ";'? Cela pourrait faire la différence, même si c'est inhabituel pourquoi '.Text' ne fonctionne pas. –

Répondre

0

Essayez, ajoutez SelectedValuePath = "contenu" aux propriétés de combobox.

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

dans l'utilisation de code:

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