簡體   English   中英

將數據從2d數組傳遞到dataGrid wpf C#

[英]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"
        }
    }

假設您沒有視圖類,因此x​​aml相關的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM