Мне нужна помощь в работе WPF KeyBindings при вызове из приложения WinForm.Я создал, как мне кажется, основные части, чтобы продемонстрировать проблему.Я могу предоставить пример приложения, если это поможет.
Приложение WinForm запускает форму, содержащую кнопку, которая вызывает WPF
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim view As New WpfPart.MainWindow
System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(view)
view.ShowDialog()
End Sub
С представлением WPF создается его модель представления и настраиваетсясочетания клавиш:
<Window x:Class="WpfPart.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:WpfPart.ViewModels"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<vm:MainWindowViewModel />
</Window.DataContext>
<Window.InputBindings>
<KeyBinding Key="Escape" Command="{Binding OpenCommand}" Modifiers="Control" />
</Window.InputBindings>
<Grid>
</Grid>
ViewModel использует команду DelagateCommand, чтобы надеяться связать все воедино
using System;
using System.Windows;
using System.Windows.Input;
using WpfPart.Commands;
namespace WpfPart.ViewModels
{
class MainWindowViewModel
{
private readonly ICommand openCommand;
public MainWindowViewModel()
{
openCommand = new DelegateCommand(Open, CanOpenCommand);
}
public ICommand OpenCommand { get { return openCommand; } }
private bool CanOpenCommand(object state)
{
return true;
}
private void Open(object state)
{
MessageBox.Show("OpenCommand executed.");
}
}
}
Кто-нибудь может увидеть, где происходит ошибка, нажатие клавиши ничего не делает?!