Привязать к свойству родительского элемента в wpf
'Я хочу привязать свойство Height RichTextBox к свойству Height GridView`s Row. Как я могу это сделать? Я не знаю, как получить высоту строки, поскольку я не могу получить доступ к строке в xaml, что бы я хотел сделать.
Тип предка должен быть GridViewHeaderRow, но я не знаю его уровня...
EDIT:
<my:RadGridView Height="524" RowHeight="300" ItemsSource="{Binding Lessons}" AutoGenerateColumns="False" Name="dataGrid1" VerticalAlignment="Top" SelectionMode="Single" CanUserSortColumns="False" IsFilteringAllowed="False">
<my:RadGridView.Columns>
<my:GridViewDataColumn DataMemberBinding="{Binding SchoolclassName}" Header="Schoolclass" Width="0.1*" />
<my:GridViewDataColumn DataMemberBinding="{Binding SubjectName}" Header="Subject" Width="0.1*" />
<my:GridViewDataColumn Width="0.3*" Header="Homework">
<my:GridViewDataColumn.CellTemplate>
<DataTemplate>
<RichTextBox Height="{Binding ElementName=dataGrid1,Path=RowHeight}" >
<FlowDocument>
<Paragraph>
<Run Text="{Binding Homework}"/>
</Paragraph>
</FlowDocument>
</RichTextBox>
</DataTemplate>
</my:GridViewDataColumn.CellTemplate>
<my:RadGridView Height="524" ItemsSource="{Binding Lessons}" AutoGenerateColumns="False" Name="dataGrid1" VerticalAlignment="Top" SelectionMode="Single" CanUserSortColumns="False" IsFilteringAllowed="False">
<my:RadGridView.Columns>
<my:GridViewDataColumn Name="ContentColumn" Width="0.3*" Header="Content">
<my:GridViewDataColumn.CellTemplate>
<DataTemplate>
<RichTextBox Height="{Binding ElementName=MyRowNameToBindTo,Path=Height}">
<FlowDocument>
<Paragraph>
<Run Text="{Binding Content}"/>
</Paragraph>
</FlowDocument>
</RichTextBox>
</DataTemplate>
</my:GridViewDataColumn.CellTemplate>
...
Ответы
Ответ 1
Я не знаю о вашем RadGridView здесь. Но первое, что я попробую, это использовать RelativeSource Связывание с FindAncestor, чтобы подойти к визуальному дереву до тех пор, пока не будет найден GridViewHeaderRow и не привязан к его высоте свойство.
... Height="{Binding Height,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type GridViewHeaderRow }}}" ...
Возможно, вам придется подойти к дереву, чтобы найти RadGridView, а затем вернуться к нему в строку заголовка.
... Height="{Binding HeaderRow.Height,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type RadGridView }}}" ...
или
... Height="{Binding Rows[0].Height,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type RadGridView }}}" ...
Зависит от реализации RadGridView.