2017-08-30 4 views
1

私のコード例から始めます。これはWPFアプリケーションです。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"; 
     } 
    } 
} 

私はプログラム的CB1内の項目CB0の "CR" と項目 "AA" を選択します。

これを実行すると、CB0は何も表示せず、アイテムが選択されていません。 CB1が正しく表示され、「AA」が選択されました。私はこれが "CR"が "CRLF"のプレフィックスであることと関係があると思います。私はアイテムの順序を変更すると動作させることができますが、私は疑問に思っています:アイテムを指定した順序で動作させる正しい方法は何ですか?

おかげ

+0

は、なぜあなたはプログラム的にそれをしたいですか?必要に応じてXAMLで実行できます。 – CodingYoshi

+0

ComboBoxでXAML SelectedIndexに設定できます。しかし、最良の方法は、バインディングでMVVMパターンを使用することです。 – Bibop

+0

'CB0.SelectedValue =" CR ";'を使ってみましたか?違いはありますが、 '.Text'がうまくいかないことは珍しいですが。 –

答えて

0

は、コンボボックスのプロパティにSelectedValuePath = "コンテンツ" を追加し、これを試してみてください。コード使用中

<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"; 
関連する問題