2017-08-28 10 views
0

コンボボックスにアイテムを追加するには、以下のコードを使用しますが、WPFで表示と値のメンバーを追加する方法はありません。私が使って試してみましたコンボボックスでの表示と値のメンバーc#wpf

DisplayMemberPath = MedName

とValueMemberPath = MedIDが、それはまだのみすべてのヘルプは大歓迎されますMedName

を使用しています。

public List<ComboBoxPair> MyPairs 
{ 
    get 
    { 
     return myPairs; 
    } 
} 

myPairsがプライベートである:

public class ComboBoxPair 
{ 
    public string Text { get; set; } 
    public int Index { get; set; } 

    public ComboBoxPair(string display, int idx) 
    { 
     Text = display; 
     Index = idx; 
    } 
} 

が、私はその後、読み取り専用のパブリックリストなどがあります。

using (SqlConnection conn = new SqlConnection(connection)) 
      { 
       try 
       { 
        SqlCommand sqlCmd = new SqlCommand("SELECT MedID, MedName FROM Medication", conn); 
        conn.Open(); 
        SqlDataReader sqlReader = sqlCmd.ExecuteReader(); 

        while (sqlReader.Read()) 
        { 
         comboBox_select_Item.Items.Add(sqlReader["MedName"].ToString()); 

        } 
        sqlReader.Close(); 

       } 
       catch (Exception ex) 
       { 
        MessageBox.Show("Could not populate medication combobox from database.", ex.ToString()); 
       } 
      } 

答えて

1

私はこの種のコンボボックスに対処する方法はComboBoxPairクラス経由であなたと同じように記入してください:

myPairs.Add(new ComboBoxPair(sqlReader.GetString[1], sqlReader.GetInt32[0])); 

今私のXAMLで、私は

<ComboBox IsReadOnly="False" ItemsSource="{Binding MyPairs}" 
DisplayMemberPath="Text" SelectedValuePath="Index" 
SelectedValue="{Binding MyPairValue, Mode=TwoWay}" 
other values /> 

を持ってMyPairValueは、選択されたMedIDを保持する必要がありますint型のプロパティです。

+0

だけで簡単な質問、公開リスト? –

+0

公開リストとプロパティMyPairValueはViewModelにあります –

1

正しい方法は@JonathaWillcock回答です。

が、ここで、それがどのように機能するかを見るための最小限の変更:あなたのコード内

XAML

<ComboBox DislayMemberPath="MedName" ValueMemberPath="MedID" ... /> 

、ループを変更:追加する

while (sqlReader.Read()) 
    comboBox_select_Item.Items.Add(new { MedName = sqlReader["MedName"].ToString(), MedID = sqlReader["MedID"].ToString() }); 
関連する問題