问题标签 [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 投票
2 回答
13760 浏览

wpf - WPF CommandParameter 绑定问题

我在理解命令参数绑定的工作原理时遇到了一些麻烦。

当我在调用 InitializeComponent 之前创建小部件类的实例时,它似乎工作正常。对 ExecuteCommand 函数中的参数(Widget)的修改将被“应用”到 _widget。这是我所期望的行为。

如果 _widget 的实例是在 InitializeComponent 之后创建的,我会在 ExecuteCommand 函数中得到 e.Parameter 的空引用异常。

为什么是这样?如何使用 MVP 模式进行这项工作,在创建视图后可能会创建绑定对象?

0 投票
1 回答
4093 浏览

c# - CanExecute-Result 更改后控件不刷新

在我的窗口中,我有加载和保存方法的按钮。我使用 CommandBinding 并且保存按钮具有 CanExecute 属性,以防止用户在加载数据之前保存数据。

CanExecute-Methode 连接到一个名为“canSaveXML”的简单布尔值

我的意图是在加载数据后设置 canSaveXML = true 但在值发生更改后控件不会刷新。我做了一些阅读,发现我必须调用 CommandManager.InvalidateRequerySuggested。我现在这样做,我的代码看起来像这样。

但是控件(按钮)仍然没有刷新。在我触发 UI 上的任何内容或最小化/最大化窗口之前,我仍然处于禁用状态。在我这样做之后,按钮被启用。

这里有什么问题?

在 MSDN 示例中,CommandManager.InvalidateRequerySuggested 一次又一次地使用调度程序计时器调用,但我拒绝相信这将是唯一的解决方案。

0 投票
1 回答
2813 浏览

wpf - 无法将菜单项中的命令绑定到命令绑定

我有以下xaml:

关闭菜单项指定它应该使用关闭命令。Close 命令绑定指定应为 CanExecute 调用 CommandBinding_CanExecute,但永远不会调用 CommandBinding_CanExecute。关闭菜单项始终处于禁用状态。

我假设绑定没有发生。谁能解释为什么?

如果它与不在可视树中的上下文菜单有关,您如何解决它?

0 投票
4 回答
43565 浏览

c# - 使用父级的 DataContext(WPF - 动态菜单命令绑定)

我查看了这个网络和谷歌,解决方案对我不起作用。

我在 UserControl 的 ViewModel 上有一个命令。好吧,用户控件有一个绑定到 ObservableCollection 的 ItemsControl。在 ItemsControl.ItemTemplate 的 DataTemplate 中,我有一个按钮,我想使用该命令。我无法绑定命令,因为在 DataTemplate 内部,datacontext 不是 ViewModel,而是 ObservableCollection 的一个项目。

问题是:如果丢失了父数据上下文,如何将按钮绑定到命令?

我认为这需要一个简单的解决方案,因为我认为这是一个常见问题。

想象一下这个场景:

您有一个带有 observableCollection 作为 ItemsSource 的 ListBox 项,因此您在 ListBox 内为集合中的每个元素使用一个数据模板。好吧,您想删除选定的项目,并在该作业的每一行中放置一个按钮。你是怎样做的?

在 MVP 中,我可以在按钮的单击事件中执行此操作:

简而言之。您将行(所选项目)的数据上下文发送给演示者。

但是,我怎样才能以 mvvm 方式做到这一点?因为我需要使用命令,但我无法将命令分配给按钮,因为按钮对 ViewModel (命令所在的位置)一无所知。

如您所见,按钮必须存在于数据模板中,然后数据上下文不再是 ViewModel.... 这就是为什么我需要访问父级的 DataContext 才能访问命令的原因。

我希望你能更好地理解我的问题。

谢谢你。

0 投票
7 回答
129235 浏览

wpf - 如何将关闭命令绑定到按钮

最简单的方法是实现ButtonClick事件处理程序和调用Window.Close()方法,但是如何通过Command绑定来实现呢?

0 投票
1 回答
1325 浏览

wpf - 通过 XAML 在 PageFunction 表单上设置命令绑定

如果要创建 WPF 窗口或 WPF 页面,可以将命令绑定到 XAML 中的函数。

还有另一种类型的 WPF 表单:a PageFunction. 但它不允许你输入:

我可以猜测两种可能的解释:

  • 因为PageFunction是泛型对象,您必须以某种方式将泛型参数输入 XAML。
  • 这只是框架中的不一致。

有谁知道我如何在 XAML中CommandBindings为 a配置?PageFunction(我知道我可以在代码中做到这一点,但这不是重点)。

0 投票
1 回答
423 浏览

c# - CommandBinding 干扰 INotifyPropertyChanged

使用 WPF,我正在构建一个非常简单的文档编辑器,它将提供基本的格式化功能,例如修改用户文本外观的能力,即下划线、粗体、更改字体大小等。

我已经为用户的输入实现了几个 RichTextBox,并希望显示一个按钮来说明类似于 Microsoft Word 的格式选项的切换状态。例如,如果用户按下 CTRL+B,所有输入的文本都将是粗体,而“粗体”按钮则反映这种状态(按下)。

此时,按钮的 IsChecked 属性(使用自定义按钮),被绑定到一个 Property (IsSelectedTextBold)。使用 richTextBox.SelectionChanged 检测选择更改,我调用 OnPropertyChanged("IsSelectedTextBold") (定义如下)。这按预期工作;但是,当用户突出显示一个单词并按下 CTRL+B 时,选择的字体粗细更改为粗体,但按钮不反映更改,因为没有引发 richTextBox.SelectionChanged 事件。寻找一种方法来检测用户何时按下 CTRL+B,我注册了自己的 CommandBinding:

ToggleBold_Executed() 实现切换粗体并调用 OnPropertyChanged("IsSelectedTextBold") 以通知按钮发生了更改。

出于某种原因,PropertyChanged 设置为 null,并且在从 ToggleBold_Executed() 函数引发时不会触发,但在 RichTextBox_SelectionChanged 事件调用时工作正常。

作为旁注,我还考虑将 Button 的 IsChecked 属性绑定到 RichTextBox.FontWeight(使用必要的转换器)。唯一阻止我这样做的是拥有多个 RichTextBox。不确定是否要动态绑定和取消绑定按钮到活动的 RichTextBox。

感谢您忍受冗长的帖子 - 任何帮助将不胜感激。谢谢!

0 投票
2 回答
12734 浏览

wpf - 多命令绑定

是否可以将多个命令绑定到按钮。

我有一个用户控件,我在我的主应用程序(父应用程序)中调用它。

我想处理两个控件(用户控件以及主窗口)上的单击命令。但是我只能得到一个。

有什么方法可以让我得到这个。

非常感谢任何帮助。

代码片段:

问候, 图沙尔

0 投票
2 回答
3209 浏览

c# - 如何清除 CommandManager 注册的命令绑定?

我有这个使用 CommandBinding 的控件(WPF),它像这样注册:

所以,当我卸载控件时,我想清除这个绑定。我该怎么做呢?

谢谢!

0 投票
2 回答
13702 浏览

.net - Application Level shortcut keys in WPF

In WPF application I am currently trying to bind a Command to launch a calculator Tool form any where in the application using shortcut keys, I have created a command but not getting how to map commands and shortcut keys to create universal shortcut keys in my application. Thanks in advance.