Привязка WPF к родительскому DataContext
У нас есть приложение WPF со стандартным шаблоном MVVM, использующее Cinch (и, следовательно, MefedMVVM) для View -> Разрешение ViewModel. Это хорошо работает, и я могу связать соответствующие элементы управления со свойствами ViewModel.
В рамках определенного View у нас есть Infragistics XamGrid. Эта сетка привязана к ObservableCollection в ViewModel и отображает соответствующие строки. Однако в этой сетке у меня есть определенный столбец, в котором я пытаюсь привязать текстовое значение TextBox к свойству родительского DataContext, а не к ObservableCollection. Эта привязка не работает.
Мы'мы прошли через несколько вариантов, включая:
Использование AncestorType для отслеживания дерева и привязки к DataContext родительского UserControl следующим образом (изотличный ответ на этот вопрос, а такжеэтот) ...
{Binding Path=PathToProperty, RelativeSource={RelativeSource AncestorType={x:Type typeOfAncestor}}}
Указание ElementName и попытка напрямую нацелить элемент управления верхнего уровня. ЕстьСмотри сюда если ты'Я хотел бы прочитать об использовании ElementName.
Используя 'прокси» FrameorkElement, определенный в ресурсах для UserControl, чтобы попытатьсяпройти в ' контекст по мере необходимости. Мы определяем элемент, как показано ниже, а затем ссылаемся на статический ресурс ...
В этом случае привязка находит FrameworkElement, но не может получить доступ к чему-либо кроме этого (при указании Path).
Прочитав, кажется весьма вероятным, что это вызвано строительными колоннами Infragistics XamGrid вне дерева. Однако, даже если это так, по крайней мере варианты 2 или 3 должны работать.
Мы думаем, что это связано с привязкой V-VM, но даже используя Snoop, мыМы еще не выяснили, в чем именно заключается проблема. Я'm ни в коем случае не эксперт с привязкой WPF, поэтому любые указатели будут оценены.
РЕДАКТИРОВАТЬ: я нашел несколько примеров шаблонов от InfragisticsВот что я попробую.
РЕДАКТИРОВАТЬ 2: Как указывает @Dtex, шаблоны являются подходящим способом. Вот соответствующий фрагмент для использования с XamGrid: I '
Вы оставили XML открытым ... выпросто добавьте нужные столбцы и закройте соответствующие теги. "