Привязка к (Validation.Errors) .CurrentItem не работает с TextBox (работает с DataGrid) - PullRequest
4 голосов
/ 30 марта 2011

Я пытаюсь привязать свойство 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")
});

С уважением,

Vale

Ответы [ 2 ]

2 голосов
/ 30 марта 2011

Я не уверен, что вам нужен CurrentItem там

Я никогда раньше не выполнял привязку проверки в коде, но моя проверка XAML для TextBox выглядит следующим образом:

<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>
2 голосов
/ 30 марта 2011

Похоже, вы можете использовать свойство Binding.Source .Вот так:

grid.SetValue(Grid.ToolTipProperty, new Binding() {
     Source = textBox1,
     Path = new PropertyPath("(Validation.Errors).CurrentItem.ErrorContent")
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...