Как связать данные коллекции как значение столбцов в сетке данных?
Я хочу связать коллекцию данных как разные столбцы в DataGrid
, Обычный способ связывания данных - это свойство связывания. Но теперь мой сценарий - это свойства динамической коллекции, которые могут отличаться от разных экземпляров объекта. Для каждого объекта мне нужно динамически создать DataGrid
,
Здесь я приведу упрощенный живой пример, который абстрагирован от моего сценария:
public class Company
{
...
public string CompanyName { set; get; }
public ObservableCollection<CompanyProperty> data;
}
public class CompanyProperty
{
public string PropertyName { get; set; }
public string Value { get; set; }
}
В моем основном классе у меня есть ObservableCollection of Company:
class Window
{
private ObservableCollection<Company> _list;
private void CreateData()
{
Company tmp = new Company("Siemens");
tmp.data.Add(new CompanyProperty() { PropertyName = "Country", Value = "Germany" });
tmp.data.Add(new CompanyProperty() { PropertyName = "Staffs", Value = "400,000" });
_list.Add(tmp);
tmp = new Company("ABB");
tmp.data.Add(new CompanyProperty() { PropertyName = "Country", Value = "Swiss" });
tmp.data.Add(new CompanyProperty() { PropertyName = "Staffs", Value = "100,000" });
_list.Add(tmp);
}
}
Теперь я хочу связать свои данные с DataGrid
который будет выглядеть как 3 столбца (CompanyName, Country, Staffs) и 2 ряда (Siemens, ABB).
Я борюсь с тем, как связать коллекцию свойств компании с различными столбцами в моем DataGrid
так как "Country" и "Staffs" - это не свойства класса "Company", а только значения в ObservableCollection
член.
1 ответ
После некоторого исследования я сам нашел решение, которое заключается в создании DataTable для передачи собранных данных в DataTable (мы можем легко изменить значения в разные столбцы в DataTable).
Затем вместо привязки "ObservableCollection _list" мы связываем DataTable с сеткой данных. Это кажется работает.
И мне все еще интересно узнать, есть ли у кого-то какие-то другие или лучшие решения для типа сенарио?