InputBindings:获取与此元素关联的输入绑定的集合。内容为一个或多个 InputBinding 元素(通常为 KeyBinding 或 MouseBinding 派生类)。 其中每个都应具有 Command 和 Gesture 属性集。
下面是给Border控件绑定鼠标右击事件(也可传递参数)
<Border Height="50" Background="Gray" Margin="2 2 2 0">
<Border.InputBindings>
<MouseBinding MouseAction="LeftClick" Command="{Binding
TestCommand}">
</MouseBinding>
</Border.InputBindings>
</Border>
WMVM模式中使用键盘和鼠标事件的绑定
<TextBox x:Name="SearchBox" Text="{Binding SearchText}" Width="246"
Height="24" HorizontalAlignment="Right"
PreviewKeyDown="SearchBox_OnKeyDown">
<TextBox.InputBindings>
<!--绑定键盘输入事件-->
<KeyBinding Command="{Binding KeyEventCommand}" Key="Enter"/>
<dxg:GridControl.InputBindings>
<!-- 绑定鼠标事件-->
<MouseBinding Command="{Binding
ProductDoubleClickCommand}" CommandParameter="{Binding
ElementName=ProductCtrl,Path=CurrentItem}"
MouseAction="LeftDoubleClick"/>
</dxg:GridControl.InputBindings>
</TextBox.InputBindings>
</TextBox>
上面需要注意的是:搜索文本框的输入文本在按Enter后虽然会触发事件,但是获取不到搜索文本框的输入文本值,因此需要是搜索文本框的输入文本在按Enter后失去焦点,以添加PreviewKeyDown="SearchBox_OnKeyDown。
private void SearchBox_OnKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
SearchBox.MoveFocus(new
TraversalRequest(FocusNavigationDirection.Next));
}
}
捕获组合键的直接用法如下;
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyStates == Keyboard.GetKeyStates(Key.P) &&
(Keyboard.Modifiers & ModifierKeys.Alt) > 0 && (Keyboard.Modifiers &ModifierKeys.Control) > 0)
{
}
}