Как привязывать 2D структуры (вроде таблиц сравнения) в DataGrid с динамическим обновлением привязок?
Например есть класс
Alternative:
public class Alternative : ObservableObject
{
private string _alternativeName = "";
public string AlternativeName
{
get { return _alternativeName; }
set
{
_alternativeName = value;
RaisePropertyChanged();
}
}
private ObservableCollection<Alternative> _childAlternatives = new ObservableCollection<Feature>();;
public ObservableCollection<Alternative> ChildAlternatives
{
get { return _childAlternatives; }
set
{
_childAlternatives = value;
RaisePropertyChanged();
}
}
private MappedValueCollection _childComparison = new MappedValueCollection();
public MappedValueCollection ChildComparison
{
get{ return _childComparison; }
set
{
_childComparison = value;
RaisePropertyChanged();
}
}
}
И нужно получить таблицу, вроде этой:
Ближайшее найденное решение:
www.codeproject.com/Tips/676530/How-to-Add-Columns...
Сценарий использования предполагает что пользователь будет выбирать
Alternative из
TreeView, и выбранный экземпляр будет сохранен в поле
SelectedAlternative, и его ChildComparison автоматически отрисуется в DataGrid. Но код из ссылки с codeproject'a некорректно переключается между MappedValueCollection: каждый раз при выборе очередной ветки всё содержимое её поля
ChildComparison копируется в новую выбранную ветку, и выглядит это так:
Дерево альтернатив -
И содержание
RootNode.ChildComparison в отладчике -