繁体   English   中英

绑定错误:找不到参考'RelativeSource FindAncestor的绑定源

[英]Binding Error : Cannot find source for binding with reference 'RelativeSource FindAncestor

我有一个自定义的文本框,它具有一些属性SelfPropertyInfo(还具有一些属性,例如IsValid和RuleDescription)。

我试图在这种类型的每个文本框上添加以下样式。

<Style TargetType="{x:Type CustomControls:TextBox}">
            <Setter Property="Height" Value="22"/>
            <Setter Property="Margin" Value="2,2,2,2"/>
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Background" Value="DarkGray" />
                </Trigger>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=SelfPropertyInfo.IsValid}" Value="False">
                    <Setter Property="BorderBrush" Value="Red"/>
                    <Setter Property="BorderThickness" Value="1"/>
                    <Setter Property="ToolTip" >
                        <Setter.Value>
                            <ToolTip >                                
                                <TextBlock Foreground="Red" Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type CustomControls:TextBox},AncestorLevel=2},Path=SelfPropertyInfo.RuleDescription}"/>
                             </ToolTip>
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
 </Style>

在上面的代码中,我没有得到工具提示文本。 (以下代码的结果)

<TextBlock Foreground="Red" Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type CustomControls:TextBox},AncestorLevel=2},Path=SelfPropertyInfo.RuleDescription}"/>

我得到以下错误:

System.Windows.Data错误:4:找不到参考'RelativeSource FindAncestor,AncestorType ='CustomControls.TextBox',AncestorLevel ='2''的绑定源。 BindingExpression:路径= SelfPropertyInfo.RuleDescription; 的DataItem = NULL; 目标元素是'TextBlock'(Name =''); 目标属性为“文本”(类型为“字符串”)

有人可以建议我在文本绑定中犯的错误吗?

注意:我无法更改添加工具提示的方式:(

首先,我要感谢nkoniishvt的此链接 它帮助我理解了问题。 通过使用以下代码,它可以按预期工作:

<Style TargetType="{x:Type CustomControls:TextBox}">
            <Setter Property="Height" Value="22"/>
            <Setter Property="Margin" Value="2,2,2,2"/>
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Background" Value="DarkGray" />
                </Trigger>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=SelfPropertyInfo.IsValid}" Value="False">
                    <Setter Property="BorderBrush" Value="Red"/>
                    <Setter Property="BorderThickness" Value="1"/>
                    <Setter Property="Tag" Value= "{Binding RelativeSource={RelativeSource Self}}"/>
                    <Setter Property="ToolTip">
                        <Setter.Value>
                            <ToolTip Height="28" Background="Red" DataContext="{Binding RelativeSource={RelativeSource Self},Path=PlacementTarget.Tag}">
                                <TextBlock Foreground="White" Text="{Binding Path=SelfPropertyInfo.RuleDescription}"/>
                            </ToolTip>
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
  </Style>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM