草庐IT

C#/WPF : KeyBinding not triggering Command

coder 2024-06-03 原文

我已经声明了<InputBindings>

<UserControl.InputBindings>
    <KeyBinding Key="C" Modifiers="Ctrl" Command="{Binding CopyImageCommand}" />
    <KeyBinding Key="V" Modifiers="Ctrl" Command="{Binding PasteImageCommand}" />
</UserControl.InputBindings>

出于测试目的,我也添加了绑定(bind)到这些命令的按钮

<Button Command="{Binding CopyImageCommand}" Content="Copy" />
<Button Command="{Binding PasteImageCommand}" Content="Paste" />

我注意到当启用粘贴按钮时,当我按下 Ctrl-V 时没有任何反应。 Ctrl-C 似乎有效。为此,选择了一个列表框项目,我不确定它是否有任何区别。任何人都知道为什么是我的 PasteImageCommand不触发?

顺便说一句,我正在使用 .NET 4

更新

更完整的代码片段

<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="*" />

更新

我发现我需要把 KeyBindings在主窗口中,但命令在 ViewModel 中,如何在 ShellView 中设置键绑定(bind)然后绑定(bind)到 ShellViewModel 中的命令?

最佳答案

确保您没有绑定(bind)错误。您设置了用户控件的 DataContext,但要确保命令可以绑定(bind)到它。有时,WPF 只使用出现顺序,DataContext 设置在命令之后。

可能 VS 的输出窗口已经显示了命令的绑定(bind)错误。尝试将 DataContext 定义置于顶部(并自学对所有 View 执行此操作)。

关于C#/WPF : KeyBinding not triggering Command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3941404/

有关C#/WPF : KeyBinding not triggering Command的更多相关文章

  1. 可以加载mpusbapi.dll c#.net WPF项目 - 2

    我需要构建一个GUI,以通过WindowsPC通过批量USB通信到PIC微控制器。我正在尝试使用mpusbapi.dll正如我在Internet上看到的不同教程时,我无法成功地引用项目中的DLL。vs2015向我展示了这个错误:无法添加“mpusbapi.dll”。确保该文件可访问,并且是valis组件或com组件。我进行了研究,我发现问题是未管理的DLL,所以我试图通过Dllimport参考。但是目前,这也没有起作用。我在下面分享我的代码,期望某人可以帮助我或给我一些更好的方法来实现我的目标。usingSystem.Runtime.InteropServices;namespaceGUI_R

  2. c# - 我可以在不使用浏览器对象的情况下直接在 WPF 中调用 javascript 吗? - 2

    我希望能够直接在我的WPF应用程序上创建一个使用开放层的应用程序。我发现我可以创建浏览器对象并调用JavaScript,但我不需要完整的浏览器。是否有一些脚本对象我可以使用并一起绕过浏览器对象? 最佳答案 您不需要Web浏览器或WebBrowser控件即可在NETFramework中使用JavaScript。NETFramework有一个内置的JavaScript实现,它实现了JavaScript/ECMAScript的超集,如here所述。和here.要使用NETFramework的内置JavaScript实现:添加对Micros

  3. c# - 获取 WPF 网页浏览器 HTML - 2

    我正在使用WpfWebBrowser访问某个页面。我需要获取它的HTML内容——我不能使用Webclient或WebReques等,因为我需要在该页面上执行JS。我还尝试了Awesomium和WfWebBrowser(都错了)。dynamicdoc=browser.Document;vartext=doc.InnerHtml//orsomethinglikethis上面的代码对我不起作用,它显示空引用。谁能告诉我如何获取它?我已经搜索了数周,但没有发现任何真正有效的东西:/。请像您能想象到的最大笨蛋一样回答:D。有时我会遇到有人发给我一段代码,但我不知道如何使用它...我的意思是请让你

  4. javascript - WPF - 调用 javascript 函数时出错 - 未知名称。 (来自 HRESULT : 0x80020006 (DISP_E_UNKNOWNNAME)) 的异常 - 2

    我在我的wpf应用程序中使用“WebBroswer”来呈现Googlemap。因此,我使用C#代码中的一些参数调用Pan(x,y)JavaScript方法。但我收到以下错误。Unknownname.(ExceptionfromHRESULT:0x80020006(DISP_E_UNKNOWNNAME))我的Window2.xaml文件:Button我的Window2.xaml.cs文件:namespaceTest{//////InteractionlogicforWindow2.xaml///publicpartialclassWindow2:Window{publicWindow2(

  5. WPF工控组态软件之管道和冷却风扇开发 - 2

    WPF以其丰富灵活的控件样式设计,相较于WinForm而言,一直是工控组态软件的宠儿,本文以两个简单的小例子,简述如何通过WPF设计出表示水流的管道,和转动的冷却风扇。仅供学习分享使用,如有不足之处,还请指正。设计知识点关于本示例中,涉及的知识点,如下所示:自定义用户控件,用户可以根据业务需要自定义控件,将普通的控件进行组合,封装,以满足特定的功能,并达到复用的目的。WPF形状,动画,可以通过选择,移动,变形等相关功能,改变控件的呈现形状。依赖属性,WPF可以通过依赖属性进行数据的绑定,实现UI与业务逻辑的解耦。示例截图 本示例主要实现了管道,和冷却扇,然后通过不同的旋转,移动并加以组合,如下

  6. WPF HALCON HSmartWindowControlWPF 鼠标绘制ROI - 2

    0.需求在HSmartWindowsControlWPF上用鼠标绘制ROI,且显示绘制时的鼠标交互过程,最终效果如下:1.基本思路在HSmartWindowControl上布置一层透明的Canvas,用于实时显示鼠标绘制ROI的过程鼠标移动时,在Canvas上用鼠标实时绘制Rectangle等ROI形状,鼠标在Canvas坐标系中的Position信息(x,y)坐标转换到HALCON图像坐标系,变换为Row、Column等信息根据Row、Column信息调用HDrawingObject.CreateDrawingObject()方法生成Halcon原生ROI鼠标左键释放时,隐藏Canvas,将

  7. c# - WPF ObservableCollection 两种方式绑定(bind) XML 文件 - 2

    我想将一个ObservableCollection绑定(bind)到一个XML文件。在的多次回复之前YoushouldbindyourDataGrid,ComboBox,etc..directlytotheXMLfile请注意ObservableCollection已经存在并且已经绑定(bind)到DataGrid、ComboBox等...重写所有代码对我来说听起来一点也不有趣。尽管我所做的关于将XML文件绑定(bind)到ObservableCollection的每个搜索都会直接返回XML文件的绑定(bind)对象。是的,我知道我可以自己手动添加、更新和删除,但我希望不必这样做。

  8. c# - 在 WPF 中运行时 xml 文档更改时如何刷新 xmlDataProvider? - 2

    我正在尝试在visualstudiowpf中制作图像查看器/相册创建器。每个相册的图像路径都存储在一个xml文档中,我绑定(bind)到该文档以在列表框中显示每个相册中的图像。问题是当我在运行时添加图像或相册并将其写入xml文档时。我似乎无法对xml文档更新进行绑定(bind),因此它们也会显示新图像和相册。在XmlDataProvider上调用Refresh()不会改变任何内容。我不想重做XmlDataProvider的绑定(bind),只是让它再次从同一源读取。XAML:............代码隐藏:privatevoidnewImagePathButton_Click(obj

  9. wpf - 强制 XML 具有结束标记? - 2

    我有一个创建XDocument的代码,我在其中使用System.Xml.Linq类添加了XElements。唯一的问题是,如果xml节点没有值,它会返回一个已经关闭的标签。即但我有点想创建一个同时显示开始标记和结束标记的XML。即即使它没有值(value)。有什么方法可以使它看起来像这样吗?P.S.:我将这段代码保存在数据库中,在一个接受数据类型xml的表列下,因此添加一个字符串。在数据库上关闭Empty,所以FML。有什么想法吗? 最佳答案 尝试分配InnerTextXmlNode的"".此操作显然会使它扩展为形式。

  10. c# - 如何在 WPF 的 TextBlock 中显示已解析的 xml? - 2

    我有TextBlock,名称为XML_View,我也知道.xml文件位置stringfilename=dlg.FileName;所以我想显示TextBlock的xmln,我在这里找到了一个可能的解决方案(DisplayXMLinaWPFtextbox),它作为一个函数给出,如下所示:protectedstringFormatXml(stringxmlString){XmlDocumentdoc=newXmlDocument();doc.LoadXml(xmlString);StringBuildersb=newStringBuilder();System.IO.TextWritertr

随机推荐