Мой вопрос касается правильного связывания свойства одного элемента с другим.
Вот структура моего кода:
Шаблон данных содержит сетку (назовем ее сеткой GridA
), а в сетке я указываю экземпляр элемента управления, называемый ControlA
.
ControlA
- это UserControl
, который содержит Grid
. В ControlA
(программный код) есть пользовательская логика, которая динамически создает контент, но в двух словах, он использует другой шаблон данных.
Шаблон данных для ControlA
состоит из другого Grid
. Я хочу связать свойство Height
для этой сетки в этом шаблоне данных со свойством Height
Grid
в шаблоне данных, указанном в моей первой маркированной точке выше (сетка с именем GridA
).
Вот XAML, который я использовал для привязки, но, по сути, он не работает, так как не находит Grid:
<Grid Height="{Binding Path=ActualHeight,
RelativeSource={RelativeSource FindAncestor,
AncestorType=Grid,
AncestorLevel=2},
UpdateSourceTrigger=PropertyChanged}">
</Grid>
Я понимаю, что, указав AncestorLevel=2
, он будет использовать второе «найденное» вхождение искомого типа, в данном случае типом является Grid
. Поэтому, на мой взгляд, он сначала найдет Grid
в ControlA
, затем продолжит идти вверх по дереву и найдет Grid
в первом шаблоне данных, который является Grid
с именем GridA
. Это должно быть второе вхождение, верно?