WPF将字典绑定到组合框

本文关键字:组合 绑定 字典 WPF | 更新日期: 2023-09-27 18:21:59

我有双数组列表。某些值是预定义的。我想把这个列表绑定到DataGrid。实际上,数据网格单元格是用字典值填充的组合框。其思想是,用户从下拉列表中选择任何值,并将相应的Key写入具有双数组的List中。代码如下:

        Dictionary<int, string> scores = new Dictionary<int, string>();                                   
        scores.Add(1, "the same");
        scores.Add(3, "moderate superiority");
        scores.Add(5, "strong superiority");
        scores.Add(7, "very strong superiority");
        scores.Add(9, "extremely superiority");

        //define number of alternatives
        int num = Alternatives.Children.Count - 1;
        //initialize matrix for assessment scores
        List<double[]> gridAssessment = new List<double[]>();
        for (int i = 0; i < num; i++)
        {                
            gridAssessment.Add(new double[num]);
        }
        //set initial values
        for (int i = 0; i < num; i++)
        {
            gridAssessment[i][i] = scores.ElementAt(0).Key;                
        }
        //define source for assessment grid
        grAssessment.ItemsSource = gridAssessment;
        grAssessment.AutoGenerateColumns = false;            

        //add columns to the grid
        for (int i = 0; i < num; i++)
        {
            DataGridComboBoxColumn col = new DataGridComboBoxColumn();               
            grAssessment.Columns.Add(col);
            col.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
            //define source for comboboxes
            col.ItemsSource = scores;                
            col.DisplayMemberPath = "Value";
            col.SelectedValuePath = "Key";
            string a = "[" + i.ToString() + "]";
            Binding t = new Binding(a);
            t.Mode = BindingMode.TwoWay;                
            col.SelectedValueBinding = t;  

实际上,当我从下拉列表中选择任何值时,都会出现验证标记。你能帮我装订一下吗?

非常感谢。

WPF将字典绑定到组合框

问题存在于此处:

//initialize matrix for assessment scores
List<double[]> gridAssessment = new List<double[]>();
for (int i = 0; i < num; i++)
{
    gridAssessment.Add(new double[num]);
}

检查"输出"窗口,它会说"无法转换回"。因此,当它试图将double转换回int时,就会出现问题。如果您将其更改为int以匹配"分数"数据类型,则验证将消失。

固定代码:

//initialize matrix for assessment scores
List<int[]> gridAssessment = new List<int[]>();
for (int i = 0; i < num; i++)
{
    gridAssessment.Add(new int[num]);
}