问题标签 [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.
wpf - MVVM 多命令处理程序
我的应用程序层使用 DialogPresenters 在各种对话框(模式、启动屏幕等)中显示一些 ViewModel。
这个设置真的很好,除了如果我的 ViewModel 决定它需要在 CancelCommand 上做一些事情(这是完全合理的),那么它将取代演示者对 Terminate() 的调用,反之亦然。
我想做的是:
本着与附加事件处理程序相同的精神。
- 这在 C#.NET 3.5 中可行吗?
- 我将如何实现它?
- 这是不好的 MVVM 做法吗?
谢谢
D
wpf - WPF CustomControl 命令和数据绑定
好吧,我有一个名为 Dialog 的自定义控件来解决问题这是我的 vb.net 代码:
这是我的xaml:
但是 YesCommand 似乎不起作用,但如果我把 OkCommand 它工作,那么为什么我不能绑定到在代码隐藏(或控制代码)中定义和设置的命令?
c# - WPF 中的键绑定
我是 WPF 新手,在我正在构建的应用程序中,我想在按下 alt 键时显示主菜单,就像 vista 和 Windows 7 中的 Windows 资源管理器一样。我尝试使用仅带有修饰符的键绑定设置,但这似乎不起作用。
到目前为止,代码如下:
p>我还希望菜单在失去焦点时消失。
有任何想法吗?
wpf - 我可以在同一个控件上为同一个命令有多个 CommandBindings 吗?
我有一个 UserControl,它将一个 CommandBinding 添加到它的 CommandBindings 集合中以处理特定的命令。后来我在一个窗口中使用了这个控件,并希望将另一个绑定添加到同一个控件以添加其他行为。但问题是,当我这样做时,似乎当我将另一个 CommandBinding 添加到控件的 CommandBindings 集合时,它会替换已经为同一命令创建的任何绑定。所以看起来一个控件每个控件只能有一个 CommandBinding,这是正确的吗?
请参阅下面的代码示例,该示例尝试为同一个保存命令设置两个 CommandBindings。
最初我在编写这段代码时期待编译时或运行时异常,但很惊讶它没有抱怨。接下来虽然我很失望,因为我的 CommandBinding_Executed 处理程序只被调用一次,而不是我希望的两次。
更新: 经过一些测试,我的第二个 CommandBinding 似乎没有覆盖我的第一个,而是似乎即使我没有在我的事件处理程序中将 Handled 设置为 true,第一个命令绑定也会吞噬命令。在这一点上,我很确定我的问题的解决方案是了解为什么即使 Handled 未设置为 true,路由命令也不会传播到第一个处理程序。
更新: 我发现了这个很棒的小消息,它只是证实了 WPF 中命令路由背后的一些奇怪行为。
更新: 关于如何解决每个命令似乎只能有一个有效的 CommandBinding 这一事实的一个想法是,默认的 CommandBinding 类似乎将 Executed 和 CanExecute 公开为事件,这当然像所有事件一样可以有多个处理程序. 然后的想法是使用标准 CommandBindings.Add 方法之外的其他方法向命令添加额外的处理程序。也许这可以通过 Control 类上的扩展方法并结合自定义 CompositeCommandBinding 类来完成,该类允许我们在一个主绑定中聚合多个绑定。
.net - 在命令绑定中使用 WPF 控件自己的属性
我有一个切换按钮。我正在使用命令绑定,并且我想将其 IsChecked 属性的值作为参数传递。如果不命名 ToggleButton 并使用其名称来解决自身问题,我该如何做到这一点?
目前我正在通过命名控件来解决这个问题,但我认为这可以做得更好吗?
wpf - WPF 两个命令处理程序,一个命令
我来自第三方控件。它正在实现 ApplicationCommands.SelectAll。但是我想要的行为略有不同。没有我可以覆盖的虚拟方法,当我注册一个类处理程序时,就像这样
我的方法没有被调用。我派生的第三方控件是标记
e.Handled=true;
在它的命令处理程序中(我知道这是因为我已经看到了源代码,但我无法修改它)
我能做些什么?
c# - WPF 中的自定义命令允许“实时”更改依赖项属性值
我有一个场景,在我的自定义控件中,我有一个名为MinValue
type的自定义依赖属性int
。
我想允许用户通过键盘输入 Ctrl++(增加)和 Ctrl+-(减少)来更改该值。我知道这可以通过命令来完成,但是对于在哪里实现这些命令一无所知。无论窗口中的哪个控件具有焦点,用户都应该能够使用前面提到的键盘快捷键。
我想我必须在我的自定义控件中实现命令,因为只有那个控件知道如何处理键盘快捷键,但是因为我有一个充满自定义控件的列表框,每个都应该处理快捷键,我不知道如何那行得通。任何指针?一如既往的感谢!
c# - 在 WPF 中,如何在控件模板中获取命令以绑定到父级中的属性?
我对 WPF 比较陌生,有时它会让我头晕目眩。但是,我确实喜欢它背后的强大功能,尤其是与 MVVM 模型一起使用时。
我有一个ControlTemplate
包含一个Button
. 我ControlTemplate
在自定义控件中使用它。我想在自定义控件上添加一个属性,该属性将绑定Button
到ControlTemplate
. 基本上,它的右侧是一个ComboBox
允许Button
用户弹出搜索对话框的a。由于此控件可能多次出现在用户控件上,因此我需要能够将每个控件潜在地绑定到不同的命令(搜索产品、搜索客户等)。
但是,我一直无法弄清楚如何做到这一点。
这是一些示例 XAML:
我想我可以通过做这样的事情来让它工作:
但它不起作用。
任何帮助将不胜感激。
wpf - 对 Canvas 使用 WPF 命令不起作用
我有一个从Canvas
. 它包含很少的ApplicationCommands
like New
// etc. 添加这样Open
-Save
New_Enabled
总是返回真。
此控件用于具有菜单栏的 wpf 项目中;新/打开/保存菜单按钮出现在此菜单栏中,它们的Command
设置分别ApplicationCommand
如下 -
当焦点存在时,命令可以正常工作,Canvas
但一旦焦点转移到其他控件,新按钮就会被禁用。我试过设置CommandTarget
到主窗口,但这也不起作用。
为什么会发生这种情况以及如何确保始终启用新菜单按钮?
wpf - WPF CommandBinding 不在顶级项目/窗口/此
我想要的只是不同选项卡上的不同绑定,因此切换选项卡会切换命令可用性。我认为 CommandBindings 就是这样工作的。
但是我花了最后一段时间试图让这个简单的样本工作。要么我从根本上误解了(这不是第一次),要么出了点问题。
我将 CommandBinding 添加到 textBoxA 但未添加到 textBoxB。在它们之间移动应该启用和禁用设置为相应命令的按钮。
将 CommandBinding 添加到 Window 可以很好地启用按钮,但这会扼杀特定于项目的 CommandBindings 的全部意义。
使用此 XAML
在后面使用此代码
您会看到(如果您尝试此代码)该按钮仍然处于禁用状态,即使您从一个文本框移动到另一个文本框也是如此。(即使 textBoxA 应该启用按钮,因为它实现了按钮的 CommandBinding)。
这应该如何工作?
先感谢您。