我遇到输入命令键绑定的一个问题。 在这里我解释我的情况...... 我已经绑定了输入命令键绑定,如下所示,
<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();
}
}
打开子窗口后,当子窗口聚焦时,绑定到主窗口的键不起作用。如果我将焦点切换到主窗口意味着,那很好。
我知道,主窗口和子窗口彼此独立。
但我的问题是,当我将键绑定仅限于主窗口时,如何将其作为工作我的子窗口。我不想将这个绑定设置到每个子窗口,因为在我的情况下我使用了很多子窗口。
任何人请向我提出你的建议吗?
答案 0 :(得分:0)
只有在关注表单时,键绑定才有效。 您可以将新窗口中的每个命令重定向到主窗口
将构造函数更改为新窗口以接受主窗口并保存此窗口:
MainWindow mainWindow;
public Window(MainWindow w)
{
mainWindow = w;
}
每当Keybinding执行时,只需执行以下操作:
mainWindow.TabPress();
用
显示窗口Window childwindow = new Window(this) { Title = "ChildWindow", Width = 200, Height = 300 };
childwindow.Show();
答案 1 :(得分:0)
您可以尝试以窗口样式设置输入绑定(应在App.xaml中定义),以便它将应用于所有Window对象。
答案 2 :(得分:0)
此代码未经过测试! (但它应该可以工作:D)
您可以将InputBindings
中的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
中的命令。