【问题标题】:WPF Bind Dictionary to comboboxWPF 将字典绑定到组合框
【发布时间】:2015-11-14 21:28:04
【问题描述】:

我有双数组列表。一些值是预定义的。我想将此列表绑定到 DataGrid。实际上,datagrid 单元格是用字典值填充的组合框。这个想法是用户从下拉列表中选择任何值,并将适当的键写入带有双数组的列表。代码如下:

        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;  

实际上,当我从下拉验证标记中选择任何值时。你能帮我完成这个绑定吗?

非常感谢。

【问题讨论】:

    标签: c# wpf dictionary combobox


    【解决方案1】:

    问题出在此处:

    //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 以匹配“scores”数据类型,则验证将消失。

    固定代码:

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

    【讨论】:

    • 非常感谢您的帮助! :)
    • Irina,它已被回答,你应该将其标记为已回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多