Установить подсказку о проверке в CodeBehind вместо XAML - PullRequest
0 голосов
/ 30 мая 2010

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

<Style.Triggers>
    <Trigger Property="Validation.HasError" Value="true">
        <Setter Property="ToolTip"
          Value="{Binding RelativeSource={RelativeSource Self},
          Path=(Validation.Errors)[0].ErrorContent}"/>
    </Trigger>
</Style.Triggers>

Часть, которую я не могу понять, это часть Path. У меня есть следующее, но оно не работает:

new Trigger
{
    Property = Validation.HasErrorProperty,
    Value = true,
    Setters = 
    {
        new Setter
        {
            Property = Control.ToolTipProperty,
            // This part doesn't seem to work
            Value = new Binding("(Validation.Errors)[0].ErrorContent"){RelativeSource = RelativeSource.Self}
         }
     }
 }

Помощь

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

Итак, я наконец понял это. Оказывается, я установил триггер на неправильное свойство. Я пытался установить его на DataGridTextColumn CellStyle, когда мне нужно было применить его к ElementStyle. Рабочий код ниже:

new DataGridTextColumn
{
    Header = i + 1,
    Binding = new Binding(string.Format("[{0}].Value", i)) { ValidatesOnDataErrors = true, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged },
    ElementStyle = new Style
    {
        TargetType = typeof(TextBlock),
        Triggers =
        {        
            new Trigger
            {
                Property = Validation.HasErrorProperty,
                Value = true,
                Setters = 
                {
                    new Setter
                    {
                         Property = Control.ToolTipProperty,
                         Value = new Binding("(Validation.Errors)[0].ErrorContent"){RelativeSource = RelativeSource.Self}
                    }
                }
            }
        }
     }, ...etc
0 голосов
/ 04 июня 2010
...