绑定到未知类型的父级

时间:2013-10-17 11:37:30

标签: wpf data-binding controltemplate

我有一个工具提示的样式和模板,并希望将工具提示中的一些内容绑定到父级的错误集合中。我可以通过在下面的代码中明确设置AncestorType来实现这一点,但我希望这可以全局应用。我尝试过使用UIElement和FrameworkElement没有运气,但我认为这是因为它没有在树上找到正确的元素。

<ControlTemplate.Triggers>
            <DataTrigger
              Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TextBox}}, Path=(Validation.HasError)}"
              Value="True">
              <Setter
                Property="Visibility"
                TargetName="ErrorBorder"
                Value="Visible" />
              <Setter
                Property="Text"
                TargetName="ErrorText"
                Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TextBox}}, Path=(Validation.Errors)[0].ErrorContent}" />
            </DataTrigger>
          </ControlTemplate.Triggers>

3 个答案:

答案 0 :(得分:1)

简单一试,

 AncestorType=Control

答案 1 :(得分:0)

您可以在RelativeSource中使用AncestorLevel。

答案 2 :(得分:0)

我能够通过使用以下绑定绑定到工具提示的PlacementTarget来实现此功能:

{Binding RelativeSource={RelativeSource Mode=Self}, Path=PlacementTarget.(Validation.HasError)}"

只要工具提示的PlacementTarget是具有错误验证的控件(在我的情况下就是这样),这似乎工作得很好。