在运行时向WPF数据网格添加行和列

本文关键字:网格 添加行 数据网 数据 运行时 WPF | 更新日期: 2023-09-27 18:06:02

大家好,我是WPF的新手。我想读一个。resx文件和所有不同文化的相关文件;例如,默认的'en-GB' .resx文件名为'SomeFile '。'SomeFile.de-DE.resx'和'SomeFile.de-DE.resx'的德语版本。当然,我可以拥有大量不同的.resx文件,这些文件与不同的文化有关。

所以,我想把所有不同的文化资源读到一个DataGrid中,这样我就有了像

这样的东西
Resource Index | Resource Key | English (Default) | German
1              | SomeKey1     | Run Script        | Skript Ausführen 
2              | SomeKey2     | OK                | OK
我的问题是将这些数据添加到称为dataGridDataGrid的最佳方法。所以我目前得到可用的非默认。resx文件到Dictionary<string, string>
Dictionary<string, string> cultureDict = new Dictionary<string, string>();

然后我计划使用ResXResourceReader循环遍历不同的.resx文件(对于许多区域性)来读取.resx文件,如下所示

Dictionary<string, string> resourceMap = new Dictionary<string, string>();
public static void Func(string fileName)
{
    ResXResourceReader rsxr = new ResXResourceReader(fileName);        
    foreach (DictionaryEntry d in rsxr)
    {
        resourceMap.Add(d.Key.ToString(),d.Value.ToString());           
    }        
    rsxr.Close();
}
public string GetResource(string resourceId)
{
    return resourceMap[resourceId];
}

我计划创建一个List<Dictionary<string, string>>来保存来自不同文化的读者的信息,然后循环List,并添加行。

我的问题是考虑到培养的数量是可变的并且可能很大,将从这些读取器返回的数据放入DataGrid的最佳和最有效的方法是什么?

谢谢你的时间。

注:我可以添加

DataGridTextColumn itemColumn = new DataGridTextColumn();
itemColumn.Header = "Item Number";
itemColumn.Binding = new Binding("Item Number");
dataGrid.Columns.Add(itemColumn);

但是对于这种特殊情况,这是添加行的最佳方式。

在运行时向WPF数据网格添加行和列

public static void Display_Grid(DataGrid d, List<string> S1)
{
    ds = new DataSet();
    DataTable dt = new DataTable();
    ds.Tables.Add(dt);
    DataColumn cl = new DataColumn("Item Number", typeof(string));
    cl.MaxLength = 200;
    dt.Columns.Add(cl);
    int i = 0;
    foreach (string s in S1)
    {
        DataRow rw = dt.NewRow();
        rw["Item Number"] = S1[i];
        i++;
    }
    d.ItemsSource = ds.Tables[0].AsDataView();
}

使用observablecollection ItemCollection在数据网格中添加新行

    itemmodel model=new itemmodel ();
model.name='Rahul';
ItemCollection.add(model);