绑定到 wpf 中父元素的属性
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2439593/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Bind to a property of a parent element in wpf
提问by msfanboy
'I want to bind the Height property of the RichTextBox to the Height Property of the GridView`s Row. How can I do that? I do not know how to get the Row's Height as I can not access the Row in xaml what I would like to do.
'我想将 RichTextBox 的 Height 属性绑定到 GridView 的 Row 的 Height 属性。我怎样才能做到这一点?我不知道如何获得行的高度,因为我无法在 xaml 中访问我想做的行。
The Ancestor type should be GridViewHeaderRow , but I do not know its level...
Ancestor 类型应该是 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>
...
...
回答by Travis Heseman
I don't know about your RadGridView here. But the first thing I'd try is using a RelativeSourceBinding with FindAncestor to walk up the visual tree until a GridViewHeaderRow is found and bind to its Height property.
我不知道你的 RadGridView 在这里。但是我要尝试的第一件事是使用带有 FindAncestor的RelativeSourceBinding 沿着可视化树向上走,直到找到 GridViewHeaderRow 并绑定到它的 Height 属性。
... Height="{Binding Height, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type GridViewHeaderRow }}}" ...
You may have to walk up the tree to find the RadGridView and then walk back down it to the header row.
您可能需要沿着树向上走才能找到 RadGridView,然后再向下走回标题行。
... Height="{Binding HeaderRow.Height, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type RadGridView }}}" ...
or
或者
... Height="{Binding Rows[0].Height, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type RadGridView }}}" ...
Depends on the implementation of RadGridView.
取决于 RadGridView 的实现。