2016-12-28 9 views
1

Ошибка получения: «Не удалось найти метод с именем« LostFocus »для объекта типа« MyType », который соответствует ожидаемой сигнатуре».Невозможно вызвать метод из CallMethodAction на EventTrigger пользовательского TextBox

<DataGridTemplateColumn MinWidth="80" Width="1.25*" Header="6"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <customControlls:NumericTextBox x:Name="cc" 
        Style="{StaticResource NumericTextboxStyle}" 
        Text="{Binding AccountsReceivable.OverdueAtTheEndOfTheReportingPeriod, UpdateSourceTrigger=LostFocus}"> 
       <interactivity:Interaction.Triggers> 
        <interactivity:EventTrigger EventName="LostFocus" SourceName="cc"> 
         <interactions:CallMethodAction TargetObject="{Binding}" MethodName="LostFocus"/> 
        </interactivity:EventTrigger> 
       </interactivity:Interaction.Triggers> 
      </customControlls:NumericTextBox> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

И метод в ViewModel, который я пытаюсь назвать. Я также попытался удалить параметры из метода, все еще такую ​​же ошибку.

public void LostFocus(object sender, EventArgs e){} 

ответ

0

У меня это работает. Вам необходимо связать TargetObject с DataContext DataGrid.

<DataGridTemplateColumn MinWidth="80" Width="1.25*" Header="6"> 
<DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <customControlls:NumericTextBox 
       Style="{StaticResource NumericTextboxStyle}" 
       Text="{Binding AccountsReceivable.OverdueAtTheEndOfTheReportingPeriod, UpdateSourceTrigger=LostFocus}"> 
      <interactivity:Interaction.Triggers> 
       <interactivity:EventTrigger EventName="LostFocus"> 
        <interactions:CallMethodAction MethodName="LostFocus" TargetObject="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=DataContext}" /> 
       </interactivity:EventTrigger> 
      </interactivity:Interaction.Triggers> 
     </customControlls:NumericTextBox> 
    </DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 

И метод подписи, который будет называться должно быть:

public void LostFocus(object sender, RoutedEventArgs e){}