组合框上 KeyDown 的签名
Posted
技术标签:
【中文标题】组合框上 KeyDown 的签名【英文标题】:Signature for KeyDown on a ComboBox 【发布时间】:2019-05-03 15:23:56 【问题描述】:我在 Visual Studio 2015 中有一个带有 Blend Extensions 的 WPF 桌面应用程序。我想在ComboBox
中为KeyDown
事件添加EventTrigger
,但是当我按下一个键(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】:TargetObject
是包含该方法的对象。
目前你有它指向一个标准的ComboBox
,它不包含该方法。
由于您的方法位于 MyserControl
后面的代码中,因此您应该将其指向它(通过添加一个名称,就像您对组合所做的那样)
【讨论】:
以上是关于组合框上 KeyDown 的签名的主要内容,如果未能解决你的问题,请参考以下文章