在查看MS Reference源时,它们显示了RelativeSource的构造函数。下面是将FindAncestor指定为模式时使用的。
public RelativeSource(RelativeSourceMode mode, Type ancestorType, int ancestorLevel)
{
InitializeMode(mode);
AncestorType = ancestorType;
AncestorLevel = ancestorLevel;
}
现在我没有看到任何允许可选参数的内容。
然而,即使我没有指定AncestorLevel,下面的XAML也能正常工作。
<TextBlock Height="50" Text="{Binding RelativeSource={RelativeSource
FindAncestor, AncestorType={x:Type Window}}, Path=Height}"/>
为什么我可以退出AncestorLevel参数?
答案 0 :(得分:1)
字符串&#34; {Binding RelativeSource = {RelativeSource FindAncestor,AncestorType = {x:Type Window}},Path = Height}&#34;没有调用RelativeSource的构造函数。它正在调用Binding XAML Markup extensions和RelativeSource XAML Markup Extension。这些扩展有自己的语法并提供自己的默认值。
答案 1 :(得分:1)
在XAML include Markup Extensions中,所有对象都是按无参数默认构造函数实例化的。创建后设置所有属性。带参数的构造函数不适用于XAML
答案 2 :(得分:0)
检查XAML RelativeSource MarkupExtension:
intLevel - FindAncestor模式的可选项。祖先级别(在逻辑树中向父方向求值)。