Подпись для KeyDown на ComboBox - PullRequest
1 голос
/ 03 мая 2019

У меня есть настольное приложение WPF в Visual Studio 2015 с расширениями Blend. Я хочу добавить 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 Ответ

1 голос
/ 03 мая 2019

TargetObject - это объект, содержащий метод.

В настоящее время он указывает на стандарт ComboBox, который не содержит метод.

Поскольку ваш метод находится вкод, стоящий за MyserControl, вместо этого вы должны указать его (добавив имя, как вы сделали с комбо)

...