我宣佈<InputBindings>
C#/ WPF:鍵綁定不觸發命令
<UserControl.InputBindings>
<KeyBinding Key="C" Modifiers="Ctrl" Command="{Binding CopyImageCommand}" />
<KeyBinding Key="V" Modifiers="Ctrl" Command="{Binding PasteImageCommand}" />
</UserControl.InputBindings>
出於測試目的,我已經加入綁定到這些命令的按鈕太
<Button Command="{Binding CopyImageCommand}" Content="Copy" />
<Button Command="{Binding PasteImageCommand}" Content="Paste" />
我注意到,當粘貼按鈕啓用時,當我按Ctrl-V沒有任何反應。 Ctrl-C似乎工作。爲此,選擇了一個列表框項目,我不確定它是否有任何區別。任何人都知道我的PasteImageCommand
爲什麼不觸發?
我使用.NET 4順便說一句
UPDATE
更全面的代碼snipplet
<UserControl x:Class="QuickImageUpload.Views.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:QuickImageUpload.ViewModels"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.InputBindings>
<KeyBinding Key="C" Modifiers="Ctrl" Command="{Binding CopyImageCommand}" />
<KeyBinding Key="V" Modifiers="Ctrl" Command="{Binding PasteImageCommand}" />
</UserControl.InputBindings>
<UserControl.DataContext>
<vm:ShellViewModel />
</UserControl.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="*" />
UPDATE
我發現我需要把KeyBindings
在MainWindow中,但是命令在ViewModel
中,我如何在ShellView
中設置鍵綁定,然後綁定到ShellViewModel
中的命令?
能否請您發佈的InputBinding指定在哪裏?可能你把它放在錯誤的地方。 – Euphoric 2010-10-15 11:00:39
@Euphoric,我把我的InputBindings放在UserControl ShellView中。當我將它們放在MainWindow中時,我發現它可以工作,但我需要將視圖模型設置爲ShellViewModel,我認爲這不是很正確,我該如何處理? – 2010-10-19 02:44:23
@JiewMeng:你好!我有幾乎相同的問題。你有沒有找到解決辦法? – Jalal 2012-03-26 21:22:54