[英]Passing data from 2d array to a dataGrid wpf C#
我有一个数组:
string Companies[,] = new string[100,7];
我怎样才能把它放到dataGrid? 我找不到任何有效的衣服,我不知道从哪里开始。 我是WPF的新手,有人可以向我解释一下吗?
请使用ItemsSource分配数据集合。 我建议你阅读WPF的MVVM实现。 但要开始......
创建一个实现INotifyPropertyChanged接口的类
public class Employer : INotifyPropertyChanged
{
private string nameField;
public string Name {
get { return nameField; }
set {
nameField= value;
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs("Name"));
}
}
}
private int idField;
public int Id {
get { return idField; }
set {
idField= value;
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs("Id"));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
创建一个属性
private ObservableCollection<Employer> employersField;
public ObservableCollection<Employer> Employers
{
get { return employersField; }
set {
employersField= value;
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs("Employers"));
}
}
}
现在让我们在你做的构造函数中说
Employers = new ObservableCollection<Employer> {
new Employer {
Id = 0,
Name = "Mike"
},
new Employer {
Id = 1,
Name = "Dave"
}
}
假设您没有视图类,因此xaml相关的cs文件中的所有属性都是如此。 因此,在将ItemsSource分配给属性之后,需要将dataGrid的DataContext
属性绑定到类
<DataGrid DataContext = {Binding ElementName=YourControlName} ItemsSource="{Binding Employers}">
your content
</DataGrid >
YourControlName是xaml中的userControl名称!
<UserControl x:Name="YourControlName" >
all stuff
</UserControl>
看,这是一个不同的简短概述,因为我没有向您展示如何将类属性绑定到dataGrid列,以及如何将selectedItem属性绑定到您的属性。 但是你可以在stackoverflow和Internet上找到很多例子。 我刚刚展示了如何开始以及WPF中的工作原理
构造函数如下所示对象列表使用它
class ViewModel
{
public string[,] Companies
{
get;
set;
}
public List<Example> Values
{
get;
set;
}
public ViewModel()
{
Companies = new string[2, 2] { { "sjhbfsjh", "jshbvjs" }, {"vsmvs", "nm vmdz" } };
Values = new List<Example>();
for (int i = 0; i < 2; i++)
{
Example ee = new Example();
ee.A = Companies[i, 0];
ee.B = Companies[i, 1];
Values.Add(ee);
}
}
}
public class Example
{
public string A
{
get;
set;
}
public string B
{
get;
set;
}
}
然后在您的Xmal中,您可以执行以下操作
<DataGrid ItemsSource="{Binding Path=Values}"></DataGrid>
在Xmal.cs中设置数据上下文
DataContext = new ViewModel();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.