0

我在输入命令键绑定方面遇到了一个问题。在这里我解释一下我的情况......我已经绑定了输入命令键绑定,如下所示,

<Window x:Class="DefaultBehavior_KeyBinding.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Window.InputBindings>
    <KeyBinding Key="F2" Command="{Binding TestCommand}"/>
</Window.InputBindings>
<Grid>
    <Button Content="Add" Width="100" Height="35" Grid.Row="0" Name="EmptyButton" Click="EmptyButton_Click"/>
</Grid>

它工作正常。然后我在按钮单击事件中打开了新的 wpf 子窗口,如下所示,

public partial class MainWindow : Window
{
    public ICommand TestCommand { get; private set; }
    public MainWindow()
    {
        this.TestCommand = ........some command is attached here...
        InitializeComponent();
        this.DataContext = this;
    }

    private void EmptyTabButton_Click(object sender, RoutedEventArgs e)
    {
        Window childwindow = new Window() { Title = "ChildWindow", Width = 200, Height = 300 };
        childwindow.Show();
    }
}

打开子窗口后,当子窗口获得焦点时,与主窗口的键绑定不起作用。如果我将焦点切换到主窗口意味着,它很好。

我知道,主窗口和子窗口都是相互独立的。

但我的问题是,当我只将键绑定绑定到主窗口时,我怎样才能使它成为工作我的子窗口的焦点。我不想将此绑定设置到每个子窗口,因为在我的情况下,我使用了很多子窗口。

有人请给我你的建议吗?

4

3 回答 3

0

您可以尝试以 Window 样式设置输入绑定(应在 App.xaml 中定义),以便它将应用于所有 Window 对象。

于 2013-08-01T05:46:47.583 回答
0

只有在 Form 获得焦点时,键绑定才会起作用。您可以将新窗口中的每个命令重定向到主窗口

将新窗口的构造函数更改为接受主窗口并保存此窗口:

MainWindow mainWindow;
public Window(MainWindow w)
{
   mainWindow = w;
}

每当执行键绑定时,只需执行以下操作:

mainWindow.TabPress();

并显示窗口

Window childwindow = new Window(this) { Title = "ChildWindow", Width = 200, Height = 300 };
childwindow.Show();
于 2013-07-31T09:28:50.653 回答
0

此代码未经测试!(但无论如何它应该可以工作:D)

您可以将InputBindingsfrom添加MainWindow到子窗口InputBindingCollection,如下所示:

    private void EmptyTabButton_Click(object sender, RoutedEventArgs e)
    {
        Window childwindow = new Window() { Title = "ChildWindow", Width = 200, Height = 300 };

        childWindow.InputBindings.AddRange(this.InputBindings);

        childwindow.Show();
    }

通过这样做,子窗口应该对您的输入做出反应并执行来自MainWindow.

于 2016-02-09T09:45:09.217 回答