【问题标题】:C# WPF Datagrid binding to ObservableCollection MembersC# WPF Datagrid 绑定到 ObservableCollection 成员
【发布时间】:2017-04-16 20:09:25
【问题描述】:

我正在尝试找到一种方法将 WPF 数据网格绑定到我从制表符分隔的文本文件中读取的未知数量的字符串。我有一个视图,我在后面的代码中设置了 datacontext,我想我会在构造函数代码中设置 datagrid,如下所示:

public MainWindow(FileParametersViewModel vm)
{
    InitializeComponent();
    DataContext = vm;
    dataGrid.ItemsSource = vm.lParams;
    for (int i = 0; i < vm.ParamNames.Count(); i++)
    {
        DataGridTextColumn col = new DataGridTextColumn();
        col.Binding = vm.lParams.pArray[i];
        col.Header = vm.ParamNames[i];
        dataGrid.Columns.Add(col);
    }
}

ViewModel 有一个 ObservableCollection lParams 我想将数据网格绑定到:

private ObservableCollection<FileSheetParameters> _lParams;
public ObservableCollection<FileSheetParameters> lParams
{
    get { return _lParams; }
    set
    {
        if (value != _lParams)
        {
            _lParams = value;
            NotifyPropertyChanged("lParams");
        }
    }
}

每一列都将绑定到 FileSheetParameters (pArray) 中的 List 的成员:

public class FileSheetParameters
{
    public FileSheetParameters()
    {
        SheetExists = false;
        IsPlaceholder = false;
        pArray = null;
    }

    public bool SheetExists { get; set; }
    public bool IsPlaceholder { get; set; }
    public List<string> pArray { get; set; }
}

我在读取文本文件的每一行时填充列表。

我的问题是我实际上无法像在第一个代码块中那样引用 lParams.pArray。我得到一个编译时错误(以及红色波浪线)“ObservableCollection 不包含'pArray'的定义。但是 pArray 是集合中事物类的成员......我做错了什么?

如果我只是设置数据网格的 Items 源,并且不执行任何特定于列的绑定,那么我会得到一个空网格,其中最后一列标题为 pArray,每个单元格都显示 "(Collection)" 。 . .我使用了 DataTable 而不是 ObservableCollection,但这种行为不是我喜欢的。

【问题讨论】:

    标签: wpf datagrid observablecollection


    【解决方案1】:

    这个问题困扰了我一整夜,我刚刚找到了解决方案:

    后面代码中的绑定命令应该是这样的:

       string path = String.Format("pArray[{0}]", i);
       col.Binding = new Binding(path);
    

    然后数据网格会正确填充。

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 1970-01-01
      • 2015-01-26
      • 2015-04-02
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      相关资源
      最近更新 更多