Вопрос

У меня есть WPF ComboBox внутри шаблона данных (много полей со списком в списке), и я хочу обработать кнопку ввода.Было бы легко, если бы это было, например.кнопка - я бы использовал команду + относительный путь привязки и т. д.К сожалению, я понятия не имею, как обрабатывать нажатие клавиши с помощью команды или как установить обработчик событий из шаблона.Какие-либо предложения?

Это было полезно?

Решение 2

Я решил свою проблему, используя обычный обработчик событий, где я прохожу по визуальному дереву, нахожу соответствующую кнопку и вызываю ее команду.Если у кого-то еще есть такая же проблема, оставьте комментарий, и я предоставлю более подробную информацию о реализации.

УПД

Вот мое решение:

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

Просмотр.xaml:

<ComboBox KeyDown="ComboBox_KeyDown"/>
<Button Command="{Binding AddResourceCommand}"/>

Просмотр.xaml.cs:

private void ComboBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        var parent = VisualTreeHelper.GetParent((DependencyObject)sender);
        int childrenCount = VisualTreeHelper.GetChildrenCount(parent);

        for (int i = 0; i < childrenCount; i++)
        {
            var child = VisualTreeHelper.GetChild(parent, i) as Button;
            if (null != child)
            {
                child.Command.Execute(null);
            }
        }
    }
} 

Другие советы

Вы можете использовать EventSetter в стиле, с которым вы устанавливаете шаблон:

<Style TargetType="{x:Type ListBoxItem}">
      <EventSetter Event="MouseWheel" Handler="GroupListBox_MouseWheel" />
      <Setter Property="Template" ... />
</Style>

В этой статье есть способ перенаправить любое событие в Command

http://nerobrain.blogspot.nl/2012/ 01 / МОФ-событий к command.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top