WPF中动态添加KeyBindings能否根据绑定的数据源动态定义KeyBindings?我有一个带有网格的屏幕,我允许用户为其保存各种布局。我目前正在将网格上下文菜单绑定到布局名称(通过ViewModel),允许他们通过菜单切换布局。但是,我想将每个布局与一个快捷键相关联。由于快捷键是用户定义的,我不能简单地在窗口XAML中添加许多元素。另一个问题是绑定需要将布局名称作为命令参数提供。有没有办法从动态源动态创建元素数组?作为测试,我已将绑定静态添加到我的视图XAML中并且它们工作正常,但这只是为了测试我的概念:这是我用来动态创建键绑定的代码,作为片段编辑器允许的部分在热键上执行片段。除了前面的例子,它还展示了如何理解组合键的用户输入://examplekeycombofromuserinputvarksc="Alt+Shift+M";ksc=ksc.ToLower();KeyBindingkb=newKeyBinding();如果(ksc.Contains("alt"))kb.Modifiers=ModifierKeys.Alt;如果(ksc.Contains("shift"))kb.Modifiers|=ModifierKeys.Shift;如果(ksc.Contains("ctrl")||ksc.Contains("ctl"))kb.Modifiers|=ModifierKeys.Control;stringkey=ksc.Replace("+","").Replace("-","").Replace("_","").Replace("","").Replace("alt","").Replace("shift","").Replace("ctrl","").Replace("ctl","");key=CultureInfo.CurrentCulture.TextInfo.ToTitleCase(key);if(!string.IsNullOrEmpty(key)){KeyConverterk=newKeyConverter();kb.Key=(Key)k.ConvertFromString(key);}//无论你需要绑定什么命令//CommandBase这里是我用来创建命令的自定义类//带有Execute/CanExecute处理程序kb.Command=newCommandBase((s,e)=>InsertSnippet(snippet),(s,e)=>模型.IsEditorActive);模型.Window.InputBindings.Add(kb);有几种方法可以做到这一点,最简单的方法是创建一个转换器,它将根据命令名称返回一个键(基本上它是一个查找,你的布局名称是一个键,键是一个值)如果你需要处理更复杂的客户端,它变得有点复杂,我会为它做一个示例:这是XAML:以上是C#学习教程:在WPF中动态添加KeyBindings如果对你有用,你需要知道更多关于C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
