4

Validation.Error我在 TextBox 的附加事件上使用。

验证错误

我想将它绑定到EventToCommand.

通常它不起作用:

 <TextBox Height="20" Width="150" Text="{Binding MyProperty,NotifyOnValidationError=True,ValidatesOnDataErrors=True}" ><!--Validation.Error="TextBox_Error"-->
     <i:Interaction.Triggers>
        <i:EventTrigger EventName="Validation.Error">
           <mvvm:EventToCommand Command="{Binding MyCmd}" PassEventArgsToCommand="True" ></mvvm:EventToCommand>
        </i:EventTrigger>
     </i:Interaction.Triggers>
  </TextBox>

所以我找到了一种方法,你可以在下面的链接中看到它:

将 mvvm 事件附加到附加事件的命令

但我收到一个错误:

RoutedEventConverter cannot convert from System.String.

在此处输入图像描述

任何人都可以帮忙吗?

编辑 :

我的命令在ViewModel

  public MyViewModel()
    {
        MyCmd = new RelayCommand<RoutedEventArgs>(Valid);
    }

    public RelayCommand<RoutedEventArgs> MyCmd { get; set; }

    private void Valid(RoutedEventArgs args)
    {
        //Do something
    }
4

1 回答 1

4

根据您发布的链接,

该类RoutedEventTrigger需要 aRoutedEvent并且您的 xaml 无法将字符串转换Validation.Error为所需的类型。

所以切换

<i:Interaction.Triggers>
  <view_model:RoutedEventTrigger RoutedEvent="Validation.Error">
    <mvvm:EventToCommand Command="{Binding MyCmd}" PassEventArgsToCommand="True" />
  </view_model:RoutedEventTrigger>
</i:Interaction.Triggers>

<i:Interaction.Triggers>
  <view_model:RoutedEventTrigger RoutedEvent="{x:Static Validation.ErrorEvent}">
    <mvvm:EventToCommand Command="{Binding MyCmd}" PassEventArgsToCommand="True" />
  </view_model:RoutedEventTrigger>
</i:Interaction.Triggers>

应该没问题

于 2013-07-01T10:11:16.503 回答