2013-07-01 3 views
4

Я использую приложенное событие Validation.Error текстового поля.EventToCommand с прикрепленным событием

Validation.Error

Я хочу, чтобы привязать его к 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> 

Так что я нашел способ сделать это, вы можете увидеть его по ссылке ниже:

Attached an mvvm event to command to an attached event

Но я получаю ошибка:

RoutedEventConverter cannot convert from System.String. 

enter image description here

Может кто-нибудь помочь?

EDIT:

Моя команда в ViewModel

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

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

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

Что такое определение вашей ViemModel "MyCmd" Command? – Bruno

+0

@Bruno. Я редактировал вопрос. –

ответ

4

основывая его на ссылке вы в курсе,

Класс RoutedEventTrigger ожидает RoutedEvent и ваш 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> 

и она должна быть тонкой

+0

Отлично !!! Большое количество времени, чтобы найти ответ, спасибо. –

Смежные вопросы