0

申し訳ありませんが、私はWPFを初めて使用するため、この問題の問題点を見つけるために何時間も検索しました。

次のコードが与えられます:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        List<Data> _Buffer = new List<Data>();
        for (int i = 0; i < 50; i++)
        {
            _Buffer.Add(new Data(i, i.ToString()));
        }

        //Also tried:
        //comboBox1.DataContext = _Buffer.ToArray();
        comboBox1.ItemsSource = _Buffer.ToArray();
        comboBox1.SelectedValuePath = "Val";
        comboBox1.DisplayMemberPath = "ValName";
        comboBox1.UpdateLayout();
        comboBox1.SelectionChanged += new SelectionChangedEventHandler(comboBox1_SelectionChanged);
    }

    void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        MessageBox.Show(((Data)e.AddedItems[0]).ValName);
    }

    struct Data
    {
        public Data(int Val, string ValName)
        {
            this.Val = Val;
            this.ValName = ValName;
        }
        public readonly int Val;
        public readonly string ValName;
    }
}

単純な配列をコンボにバインドするのは信じられないほど簡単だと思いますが、実際には、少しの問題を除いて、コンボのリストには何も表示されません。

XAML:

<ComboBox Height="23" HorizontalAlignment="Left" Margin="109,82,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" ItemsSource="{Binding}" />

これを行う正しい方法は何ですか?

4

1 に答える 1

0

SelectedValuePathDisplayMemberPathは、作成する必要のあるアイテムバインディングValValNameプロパティへのパスであるため、次のようになります。

public int Val { get; private set; }
public string ValName { get; private set; }
于 2012-07-31T00:25:52.783 に答える