问题标签 [routed-commands]

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 回答
443 浏览

wpf - 如何将 RoutedCommand 获取到新的 ViewModel?

我有一个相对简单的分层数据主从 WPF 窗口,使用 MVVM 开发,其中 Window 指向一个 ViewModel,该 ViewModel 将 ViewModel 作为其属性之一公开用于详细视图:

ViewModelBase包含 Josh Smith 的VMCommanding代码的实现,我使用 Roslyn 的东西将其移植到 Visual Basic。

Window 的 XAML 看起来基本上是这样的,其中包含不相关的细节和很多右括号被省略。

在“Master”中选择一个项目ListBox会将DataContext“Detail”ListBox设置为相应的 DetailViewModel。在该列表框中选择第二个项目会将DataContext“详细信息”框更改为所选内容的相应 DetailViewModel。出于性能原因,一旦选择,DetailViewModel 将被保留并在DataContext“详细信息”框中切换进出。

在“详细信息”中选择一个项目ListBox会触发一个 RoutedCommand,它应该被“主”框中选择的 ViewModel 捕获。但是,RoutedCommands 永远不会将焦点转移到正确的 DetailViewModel;该命令始终被与第一个“主”列表框选择相对应的 DetailViewModel 捕获。

我需要做些什么不同的事情?

0 投票
1 回答
1399 浏览

python - 如何使用 SSH 从基于 Django 的基于 Web 的应用程序执行远程主机上的命令?

我必须在远程主机上执行一些命令,这个主机将是一个“路由器”。我从来没有做过 RPC 调用的工作。另一个大问题是我必须从基于DjangoWeb 的应用程序执行这些命令。步骤如下:

  • 用户打开一个页面并选择一个命令来执行
  • 用户从给定列表中选择远程主机
  • 用户点击执行按钮
  • 同时 Django 将检查安全问题。这意味着它将授权远程主机使用SSH
  • 并在主机上执行所需的命令并发回一条消息"Done!"

我应该如何开始解决这个问题?

我应该如何创建从用户配置文件页面到远程主机的 SSH 连接?

出于安全原因,我想使用用户私钥创建连接。我也找到了一些相关的问题,但没有找到正确的方向:)

0 投票
2 回答
1241 浏览

c# - 使用隧道而不是冒泡的 RoutedCommands

我有一个自定义控件 ( MyControl),它公开了一个自定义命令。我希望父母Window能够调用这个命令,并且所有人都MyControls应该对它做出反应。

我已将该命令添加到MyControlCommandBindings集合中,该集合还提供了一个CanExecute始终返回 true 的回调。

我的问题是调用此命令的菜单项永远不会启用。我假设这是因为菜单MyControls在可视树的上方,但老实说,我对RoutedUICommand' 范围的确切工作方式有点模糊。

有人可以澄清我做错了什么,或者这是否可能?

0 投票
1 回答
1708 浏览

c# - 无法在 Datatemplate 中设置 CommandBinding

以下是两个 xaml 片段,其中唯一的区别是一个示例直接填充窗口的可视化树,DataContext而另一个示例通过应用数据模板构造相同的窗口。

可视化树内容/DataContext

业务对象内容和数据模板

第一个示例(可视树内容和数据上下文)按预期工作,而设计者在第二个示例中引发编译时错误:“无法绑定到目标方法,因为它的签名或安全透明度与委托类型。 ”尽管出现设计器错误,我仍然可以在本地运行应用程序,我已验证路由命令处理程序正在执行。当尝试在其他 PC 上运行应用程序时,应用程序在启动时静默失败,在 Windows 事件日志中留下 xaml 加载错误日志条目。当我从第二个片段中删除命令绑定时,设计器错误消失了,应用程序在本地和其他 PC 上执行都没有问题。

有人可以向我解释异常的原因以及如何在模板中指定命令绑定。

0 投票
1 回答
421 浏览

c# - 分离视图、命令表示(文本、图标)和命令逻辑(执行、CanExecute)

如果 TL;DR:请参阅最后一段。

纯 WPF “建议”将演示文稿(控件、文本、图标)放入视图并将命令逻辑(执行、CanExecute 方法)放入代码隐藏中。除了将逻辑放入视图 ( ) 和代码隐藏是一种不受欢迎的做法之外,它对XAML 复制CommandBindings毫无帮助:每次命令时都必须复制文本、图标、大图标、提示和许多其他属性用于:主菜单、上下文菜单、工具栏按钮、功能区按钮和其他控件。

看起来第一个问题(真正分离视图和逻辑)由DelegateCommand,RelayCommand和类似的方法解决。命令逻辑被移动到 ViewModels(或在 MVVMC 的情况下为控制器),代码隐藏是干净的,CommandBindings视图中没有其他废话。

但是,对于演示重复问题,我找不到普遍接受的解决方案。我想将命令表示(文本、图标)和命令逻辑ExecuteCanExecute方法)分开。我能找到的所有代码要么将演示文稿放入代码中(通过创建带有and之类的RoutedCommand附加属性的 a ),要么将代码放入演示文稿中(即,将处理程序放入视图和代码隐藏中)。我也不喜欢。我认为演示文稿应该完全在 XAML 中,代码应该完全在 CS 中(在 ViewModel 或 Controller 中)。LabelIcon

问题:如何分离视图(带有引用命令的控件的 XAML)、命令的表示(每个命令的标签、图标等)和命令的逻辑(ViewModel 或控制器中的 C# 代码等)ExecuteCanExecute

0 投票
2 回答
281 浏览

wpf - 为什么我的命令绑定仅在按钮位于工具栏中时才有效?

我有一个带有工具栏的窗口,其中包含一些带有命令的按钮。按钮停止工作,因为我用包含按钮的堆栈面板替换了工具栏。

据我了解,这应该没有任何区别。按钮仍然设置了 Command 属性,我没有更改自定义命令类中的任何内容,并且 CommandBinding 也仍然相同。它们实现了一些比按钮更深的网格和用户控件,但它们确实有效,只要按钮位于 ToolBar 控件中!

如果我直接在窗口中实现 CommandBindings,它们就可以工作(但这不是我想要的)

下面是代码(删节):

我知道它不会编译,但我必须简化它。只要我用我的应用程序将“StackPanel”替换为“ToolBar”,这就会起作用。怎么可能?

0 投票
0 回答
402 浏览

.net - 程序在后台运行时的 WPF MediaCommands

我有一个程序,我在我的 MainWindow 中将一些.NET 媒体命令实现为路由命令,如下所示:

如果当前正在使用该程序,这将正常工作。但是,如果我切换到不同的程序并发送 TogglePlayPause MediaCommand,则不会触发该命令(永远不会调用 CanExecute)。

有没有办法确保我的程序始终响应 MediaCommands,即使它在后台运行?

FWIW 程序 Rdio 似乎能够做到这一点。我可以将它放在后台,发送 MediaCommand,音乐就会播放或暂停。

谢谢你。

0 投票
2 回答
2336 浏览

c# - RelayCommand 与 EventToCommand

我对MvvmlightRelayCommandEventToCommand在 Mvvmlight 中有点困惑。似乎EventToCommand处理EventTrigger并调用一个RelayCommand来做工作。如:

我的理解正确吗?

那么,我们可以RelayCommand直接使用 with EventTrigger,而不需要使用EventToCommand吗?

谢谢你的帮助!

0 投票
2 回答
185 浏览

c# - 使命令仅在窗口的一部分中起作用

我有这个 xaml

和这个代码隐藏文件:

如您所见,窗口中有一个名为 Cmd 的命令。窗口中有 2 个矩形 - 黄色和绿色。我希望命令 Cmd 仅在鼠标单击黄色矩形而不是绿色矩形时才起作用。我怎样才能做到这一点?

0 投票
1 回答
399 浏览

wpf - 自定义附加命令

我有一种情况,我想为框架元素编写自定义命令。我做了如下:

这是我附加在xaml中的:

但是,我想在单击按钮时触发此命令。

非常喜欢

所以我写了以下内容:

我不明白那是怎么接线的。我应该在哪里声明上述路由命令?绝对不能在 FrameworkElement 类中做到这一点。有没有办法附上它?对不起,如果我无法清楚地说明问题。简而言之:如果我要以附加的方式为文本框编写“复制”命令,我该怎么做?

编辑:@Erti 发表评论后:

现在我有两个类,UndoRedoManager

请注意注册依赖属性时在 PropertyMetadata 中传递的默认值。在 xaml 中,我将其用作:

另一个是 StaticCommand 类:

在 xaml 中,我将其用作:

但是现在上面的按钮根本没有被激活。