绑定到(Validation.Errors).CurrentItem不能与TextBox一起使用(与DataGrid一起使用)

时间:2011-03-30 14:19:47

标签: c# wpf validation binding

我正在尝试将ToolTip属性绑定到代码中的(Validation.Errors).CurrentItem。我已经使用DataGrid做了这样的事情:

var grid = new FrameworkElementFactory(typeof(Grid));
grid.SetValue(Grid.ToolTipProperty, new Binding() {
        RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(DataGridRow), 1),
        Path = new PropertyPath("(Validation.Errors).CurrentItem.ErrorContent")
});

这样可行,错误符号出现在带有工具提示的行标题中(某些错误文本)。

当我尝试使用文本框时,工具提示不会出现:

grid.SetValue(Grid.ToolTipProperty, new Binding() {
     ElementName = textBox1.Name, // tried with relative source also...
     Path = new PropertyPath("(Validation.Errors).CurrentItem.ErrorContent")
});

此致

2 个答案:

答案 0 :(得分:2)

看起来您可以使用Binding.Source属性。像这样:

grid.SetValue(Grid.ToolTipProperty, new Binding() {
     Source = textBox1,
     Path = new PropertyPath("(Validation.Errors).CurrentItem.ErrorContent")
});

答案 1 :(得分:2)

我不确定你在那里需要CurrentItem

我之前从未在代码中完成验证绑定,但我的TextBox验证XAML如下所示:

<Style TargetType="{x:Type TextBox}" x:Key="ValidatingTextBox">
    <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="True">
            <Setter Property="ToolTip" Value="{Binding 
                    Path=(Validation.Errors)[0].ErrorContent, 
                    RelativeSource={x:Static RelativeSource.Self}}" />
        </Trigger>
    </Style.Triggers>
</Style>