问题标签 [commandbinding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
122 浏览

wpf - 如何为 DataBound ListBox 做 InputBindings?

我有一个ListBox绑定ItemsSource。如果有人选择 aListBoxItem并按 Enter 键,则应执行命令。我怎么能这样做?我有ItemContainerStyleListBox但我找不到InputBindings通过 Style 设置的方法。

有任何想法吗?

0 投票
1 回答
4577 浏览

c# - 如何在 wpf 中添加多个命令绑定

我正在使用 WPF。我想为我的 WPF 应用程序创建键盘快捷键。我创建如下。“ open ”的第一个命令绑定标记正在工作,而退出的命令绑定不工作。我不知道是什么原因。

上面的代码出现以下错误:

无法将属性“Command”中的字符串“Exit”转换为“System.Windows.Input.ICommand”类型的对象。CommandConverter 无法从 System.String 转换。标记文件“WpfApplication2;component/window1.xaml”第 80 行位置 25 中的对象“System.Windows.Input.CommandBinding”出错。

0 投票
1 回答
1605 浏览

c# - ContextMenu 命令绑定未刷新

我已经有这个问题,但我不记得如何解决它。(我认为它与 wpf 中的 contextMenu 的可视化树或数据上下文有关)

我有一个带有 Combobox 和 ContentPresenter 的 ParentViewModel。ChildViewModel 的组合框显示列表。选择一个时,它将使用ContentPresenter显示。

ChildViewModel 有一个在列表中添加项目的命令。该命令可以查找它是否绑定在按钮上,但是当它使用 contextMenu 完成时,该命令在第一次执行时被绑定,但如果 ChildViewModel 更改(当在组合框中选择另一个视图模型时)则不会更改。该项目被添加到之前选择的 ChildViewModel。

我该如何解决这个问题?

父视图模型:

父视图:

子视图模型:

子视图

提前致谢

0 投票
0 回答
183 浏览

wpf - 重用 WPF 命令库中的命令是个坏主意吗?

WPF 提供了一个预定义命令库(ApplicationCommands.Save、NavigationCommands.NextPage 等),我们可以在自己的应用程序中为其创建命令绑定。我知道可以为单个 RoutedCommand/RoutedUICommand 创建多个命令绑定,通过指定不同的执行处理程序来根据应用程序上下文获得不同的行为。

据我了解,RoutedUICommand 的目的主要是提供一个通用的语义参考。ApplicationCommands.New,引用 MSDN 文档,“表明了创建新项目的意图。” 此命令可用于命令绑定中,以在应用程序中的多个不相关表单上创建新项目。

我几乎从未见过这种重复使用。在我从事的在线代码和项目中,我通常会看到在代码隐藏或视图模型中定义的 RoutedCommand,名称类似于“NewEmailCommand”。

我看到重用命令的几个优点:

  • RoutedUICommands 通常定义了 Text 属性,因此不需要定义菜单项 Header。
  • 当命令定义了输入手势时,不需要在每个使用它的地方都指定输入绑定。
  • 当命令定义了输入手势时,菜单项中的 InputGestureText 会自动填充。
  • 使用相同的命令可以提高整个应用程序的一致性——无论是用于命令的标签还是键/鼠标绑定。

想到的一些可能的缺点:

  • 在某些情况下,命令可能不明确。例如:您可能需要在一个位置使用两个不同的“新建”命令(新建->{项目...,网站...})。
  • 取而代之或重用一个命令,人们可能想要重用一个使用静态处理程序的命令绑定。
  • ApplicationCommands.New 不是一个特别有用的命令名称;它不会告诉您有关当前命令处理程序的任何信息(例如正在创建的内容)。

我非常倾向于重用命令,但正如我所说:我根本没有在实践中看到它。

你的喜好是什么?有没有我没有听说过的公认的“最佳实践”?重用命令是否有明显的问题/其他好处?

0 投票
1 回答
1384 浏览

c# - 如何从 DataTemplate 引发自定义路由事件?

我有一个名为的用户控件,dCB_Props其中包含多个对象,最重要的是绑定到可观察集合的组合框。尽管该集合可以采用任何对象,但它通常采用名为 的 UserControl EditDeleteItem。我已设置dCB_PropsEditDeleteItem用作ItemsTemplate但未触发事件。另一方面,如果我添加一个实例,EditDeleteItem那么事件将被触发。我不能以这种方式添加项目,因为 EditDeleteItem 将承载其他控件,并且我需要使用不同的 DataTemplates。

EditDeleteItemEditClick有两个名为和的路由事件DeleteClick

当集合发生变化时,它会触发一个事件,检查添加的项目是否属于 type EditDeleteItem。如果是这样,那么它将处理程序添加到上述两个事件。

EditDeleteClick 的部分 xaml:

dCB_Props 的部分 xaml:

请注意,以上两个代码仅用于对象,我省略了列定义、事件触发器等。

dCB_Props.xaml.cs 代码的一部分是:

如果我添加一个类型的项目EditDeleteItem并删除ItemTemplate驻留在内部的 Label 的属性,则上述方法有效dCB_PropsEditDeleteItem如果我在ContentTemplate中设置 ItemTemplate(如下所示),它也可以工作。但是,如前所述,我需要使用不同的数据模板,所以我假设所有数据模板都必须驻留在资源字典中,然后我必须使用模板选择器。

数据模板:

我相信我需要使用命令绑定。但不太确定将 CommandBindings 放在哪里,也不太确定如何使用它们,尽管我已经阅读了一两页。

谢谢,哈桑

0 投票
1 回答
1913 浏览

wpf - WPF 将 FrameworkElement 事件绑定到命令

如何将UserControl'sFrameworkElement事件绑定到视图模型命令?我使用 MVVM 和 Prism,因此视图模型之间的清晰分离会很好。

我尝试了多种方法,但都没有奏效:

也使用本教程http://blog.functionalfun.net/2008/09/hooking-up-commands-to-events-in-wpf.html

我是否别无选择,只能在我的代码隐藏中添加一些功能?

上述尝试均未出错,但命令未执行。

这是我的视图模型:

0 投票
3 回答
5013 浏览

mvvm - MVVM View 事件 Viewmodel 命令绑定

我正在寻找一个关于如何使用 Prism 实现事件聚合器的好(阅读:简单)示例。我从未使用过 Prism,而且我对 MVVM 本身也很陌生。

我有一个 WPF 画布作为视图,我想在 Viewmodel 的画布上处理 MouseUp 事件。现在我们组织的权力要我使用 Prism,显然 Prism 建议使用事件聚合器,这就是为什么我需要一个样本来帮助我开始。

0 投票
1 回答
404 浏览

wpf - 隧道命令

我有几个在 ListBox 中实例化的用户控件。我的 Window 中有一个按钮 raises NavigationCommands.Refresh,以及一个CanExecute允许它执行的处理程序:

在每个动态创建的用户控件(在 ListBox 的 ItemTemplate 中创建)中,我都有一个NavigationCommands.Refresh. 当我单击窗口中的按钮时,我在每个用户控件中设置的处理程序是否应该不触发?我需要命令来隧道到每个 UC,但它不是。

0 投票
1 回答
191 浏览

c# - 如何知道哪个 ApplicationCommands 实现了 .Net Framework WPF 控件(如复制和粘贴)?

我想知道如何知道框架随附的控件实现了哪些命令。例如,我如何知道 Image 是否实现了 ApplicationCommands.Copy 命令?或者,如果 TextBox 实现了 ApplicationCommands.Copy、ApplicationCommands.Cut、ApplicationCommands.Paste?

从MSDN中提取:

某些控件为某些命令内置了 CommandBindings。这种机制允许命令的语义保持不变,而实际的实现可以改变。例如,TextBox 处理粘贴命令的方式与设计用于支持图像的控件不同,但粘贴内容的基本概念保持不变。命令逻辑不能由命令提供,而必须由控件或应用程序提供。提前致谢。

0 投票
4 回答
745 浏览

wpf - MVVM - 与 WPF 命令绑定标准有关

我认为我对 MVVM 设计模型有很好的理解,但是我对 WPF、命令绑定以及我们应该如何使用它们有意见。

要将命令直接绑定到 XAML,我们需要在 ViewModel 中实现 ICommand 接口。现在,ICommand 接口是 PresentationCore.DLL 的一部分,如果我错了,请纠正我是 WPF 的一部分,而不是基本的 .NET 框架。

ViewModel 和 Model 的全部意义不在于它应该完全独立于 UI 吗?例如,如果我在 ViewModel 中实现 ICommand 并将其用作数据上下文以绑定来自 XAML 的命令,那么我的 ViewModel 是否依赖于 WPF 框架(特别是 PresentationCore.Dll)。

我的意思是,如果我要尝试在 Windows 窗体环境中使用我的模型和视图模型,我将不得不引用 PresentationCore.DLL,即使我不应该需要它,因为我使用的是 Windows 窗体而不是 WPF 框架.

这对我来说似乎有点奇怪,我在这里错过了什么吗?是否有另一种方法可以让我的模型和 ViewModel 完全独立于 UI 和 UI 框架,但仍然能够在 XAML 中使用 Command 绑定?

提前致谢!