ComboBox上KeyDown的签名

时间:2019-05-03 15:23:57

标签: mvvm mvvm-light blend

我在Visual Studio 2015中有一个带有Blend Extensions的WPF桌面应用程序。我想在EventTrigger事件的ComboBox中添加KeyDown,但是当我按下一个键(ESC)时,出现以下错误:Could not find method named 'ComboBoxExitingStrategyKeyDown' on object of type 'ComboBox' that matches the expected signature.

我的XMAL看起来像这样:

<UserControl x:Class="MyserControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:se="http://schemas.microsoft.com/expression/2010/interactions"
         xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
<ComboBox x:Name="myComboBox" Grid.Row="9" Grid.Column="1" 
                    Style="{StaticResource MasterComboBox}"
                    ItemsSource="{Binding Path=InternalSourceItems, Mode=OneWay}"
                    SelectedItem="{Binding Path=InternalItem, UpdateSourceTrigger=PropertyChanged}"
                    Text="{Binding Path=InternalItemSelectedValue, UpdateSourceTrigger=PropertyChanged}"
                    SelectedValuePath="InternalValueItemDescription"
                    Margin="6,5,6,7">
              <i:Interaction.Triggers>
                <i:EventTrigger SourceObject="{Binding ElementName=myComboBox}" EventName="KeyDown">
                    <se:CallMethodAction MethodName="ComboBoxExitingStrategyKeyDown" 
                                         TargetObject="{Binding ElementName=myComboBox}"/>
                </i:EventTrigger>
              </i:Interaction.Triggers>

该方法具有以下签名:

public void ComboBoxExitingStrategyKeyDown(object sender, KeyEventArgs e)
{
   MessageBox.Show("Good");
}

我尝试了所有受保护的,私有的,公共的,没有参数的,只有一个的RoutedEventArgs,并且总是收到消息。

我想念什么吗?

1 个答案:

答案 0 :(得分:1)

ComboBox是包含方法的对象。

当前,它指向不包含该方法的标准MyserControl

由于您的方法位于{{1}}后面的代码中,因此您应将其指向该位置(通过添加名称(如组合使用的名称一样))