Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中绑定DataGrid和ObservableCollection#_C#_Wpf_Binding_Datagrid - Fatal编程技术网

C# 在C中绑定DataGrid和ObservableCollection#

C# 在C中绑定DataGrid和ObservableCollection#,c#,wpf,binding,datagrid,C#,Wpf,Binding,Datagrid,我有一个函数,里面有3个字符串列表。我使用ObservableCollection将这3个列表保存在其中 这是ObservableCollection的定义: public partial class CreateAreaDialogWindow : System.Windows.Window { ObservableCollection<Tuple<string, string, string>> _obsCollection = new Obs

我有一个函数,里面有3个字符串列表。我使用ObservableCollection将这3个列表保存在其中

这是ObservableCollection的定义:

public partial class CreateAreaDialogWindow : System.Windows.Window
    {
        ObservableCollection<Tuple<string, string, string>> _obsCollection = new ObservableCollection<Tuple<string, string, string>>();

    }
我得到了6列而不是3列,当然它们的内容是相同的:其中3列是从XAML代码中得到的(在本例中绑定是有效的),3列是从那一行得到的:
tabela.ItemsSource=\u obscolection

当我删除时:
tabela.ItemsSource=\u obscolection我得到一个带有复选框的空表。

因此,我知道问题在于绑定不好,但有人知道如何编辑此代码以便我可以删除:
tabela.ItemsSource=\u obscolection
仍然会得到3列,其中包含列表内容和列标题:Type、MapTo和Name?

您需要做的就是设置
AutoGenerateColumns=“False”
并创建类似于
MyViewModel
的内容,作为您的数据上下文

请尝试以下代码:

 public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new MyViewModel();  
        }
    }
    public class MyViewModel

    {
          public MyViewModel()
          {
              for (int i = 0; i < 1; i++)
              {
                  _obsCollection.Add(new Tuple<string, string, string>("Test" + i, "Test2" + i, "Test3" + i));   
              }
          }
        ObservableCollection<Tuple<string, string, string>> _obsCollection = new ObservableCollection<Tuple<string, string, string>>();

        public ObservableCollection<Tuple<string, string, string>> MyObsCollection
        {
            get { return _obsCollection; }

        }
    }
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
this.DataContext=新的MyViewModel();
}
}
公共类MyViewModel
{
公共MyViewModel()
{
对于(int i=0;i<1;i++)
{
_添加(新元组(“Test”+i,“Test2”+i,“Test3”+i));
}
}
ObservableCollection_obsCollection=新的ObservableCollection();
公共可观察收集MyobCollection
{
获取{return\u obscolection;}
}
}

当然有6列。您在XAML中创建了6列。我的意思是9列,其中6列带有文本,我只需要3列带有文本,3列带有复选框。没有以赖特的方式讲述这个故事:)
tabela.ItemsSource = _obsCollection;
 public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new MyViewModel();  
        }
    }
    public class MyViewModel

    {
          public MyViewModel()
          {
              for (int i = 0; i < 1; i++)
              {
                  _obsCollection.Add(new Tuple<string, string, string>("Test" + i, "Test2" + i, "Test3" + i));   
              }
          }
        ObservableCollection<Tuple<string, string, string>> _obsCollection = new ObservableCollection<Tuple<string, string, string>>();

        public ObservableCollection<Tuple<string, string, string>> MyObsCollection
        {
            get { return _obsCollection; }

        }
    }