我在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
,并且总是收到消息。
我想念什么吗?
答案 0 :(得分:1)
ComboBox
是包含方法的对象。
当前,它指向不包含该方法的标准MyserControl
。
由于您的方法位于{{1}}后面的代码中,因此您应将其指向该位置(通过添加名称(如组合使用的名称一样))