0

我有一个数组:

   string Companies[,] = new string[100,7];

我怎样才能把它放到数据网格中?我找不到任何有效的答案,我不知道从哪里开始。我是WPF的新手,请问有人可以向我解释一下吗?

4

2 回答 2

2

请使用 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 文件中。因此,您需要将DataContextdataGrid 的属性绑定到您的类,然后将 ItemsSource 分配给您的属性

<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 中的工作方式

于 2013-10-28T01:51:55.297 回答
0

如下对象的构造函数列表使用它

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();
于 2013-10-28T02:20:23.920 回答