问题标签 [icommand]

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

wpf - CommandManager.InvalidateRequerySuggested() 不工作

当 wpf 应用程序启动时,我只调用了一次命令的CanExecute方法。我希望能够定期重新评估该方法。我发现了一些关于以编程方式或使用DispatcherTimer调用CommandManager.InvalidateRequerySuggested()的参考。两者都不适合我,并且 CanExecute 在每个应用程序生命周期中只调用一次。

有人知道修复吗?

-pom-

0 投票
2 回答
469 浏览

mvvm - 在 MVVM 方法中简化 ICommand/RelayCommand

我正在推动自己使我编写的应用程序更简单,并且我已经采取了一些步骤来做到这一点,但是我遇到了一个有趣的问题,它根本不觉得它对我来说是独一无二的。我想知道我做错了什么。

我有一个保存模型对象集合的 ViewModel。该视图是一个 ListView,它显示集合中的所有对象。模型对象具有操作它们的所有逻辑。在每个项目的 ListView 行内,我都有一个按钮,并且需要连接该按钮才能调用模型对象上的方法。

为了让它工作,我需要添加一个命令绑定,但要添加到父窗口数据上下文,它在行中传递模型对象的参数,以便可以在 ViewModel 中使用模型对象(父窗口数据上下文) 调用传入的模型对象上的方法。

这似乎比它需要的要复杂得多。我愿意扔掉我已经做过的任何事情,没有神圣的奶牛,我只是希望以一种更简单的方法来完成,这样一年后回顾起来很容易弄清楚我在做什么。

0 投票
2 回答
12208 浏览

c# - 来自其他 ViewModel 的 ViewModel 上的 MVVM 执行命令

我现在为一个简单的任务苦苦挣扎了大约 14 天:在数据库中,我有硬件类别的定义。例如 :

  1. 硬盘
    • 内部的
    • 外部的
    • 闪光

此列表在数据库中定义如下:

通过实体框架,我将这些行放入我的应用程序中。然后从这个平面数据中创建结构化对象,即我的 DataModel。该模型定义如下:

现在,我根据这些创建了名为SubCategoryViewModel的 ViewModel ,它绑定了我的 TreeView。因此,我可以在树视图中查看我的类别,并使用我定义和维护的层次结构。这工作得很好。在SubCategoryViewModel中,通过MouseDoubleClick 的附加行为定义了一个命令,该命令也绑定到 TreeView。因此,当用户双击 Item 时,在SubViewCategoryModel中定义的方法将执行特定代码。SubCategoryViewModel列表 嵌套在HWDocumentViewModel中这是我的窗口的主要 ViewModel。我现在需要的很明显:当用户双击 TreeView 中的项目时,我需要从数据库中加载项目并在 ListView 中显示它们。我的观点是,在HWDocumentViewModel中,我需要定义一个 Items 集合并将它们相应地加载到 ListView 中的选定类别。但是,我不知道如何从 SubCategoryViewModel 对 HWDocumentViewModel 执行方法。因为:TreeView 绑定到SubCategoryViewModel项目列表,所以当 DoubleClick 发生时,SubCategoryViewModel上的方法被执行。我正在寻找一种方法,如何在主 ViewModel (HWDocumentViewModel) 上执行方法。

我尝试了这种方法:
我创建了一个属性:public static SubCategoryViewModel SelectedCategoryon HWDocumentViewModel。发生双击时,我将此属性从 SubCategoryViewModel 设置为this. 因此,在这个属性中是执行双击事件委托的对象。太好了,现在我在 HWDocumentView 模型中有一个用户选择的对象。
所以,我需要将项目加载到 ListView。但是,我会从SubCategoryViewModel中的方法加载它们吗?我不这么认为。相反,我应该通过为它们创建一个 ViewModel 并将其绑定到 ListView 来从主视图模型加载它们,对吗?但是,如何从 SubCategoryViewModel 调用 HWDocumentViewModel 中的方法?我应该在可以从 SubCategoryViewModel 访问的 HWDocumentViewModel 上编写一个静态方法吗?
或者有没有办法,如何从 SubCategoryViewModel 调用在 HWDocumentViewModel 上定义的命令?

或者一般来说,我是否采取了正确的方法在 WPF 中创建类似仓库的应用程序?

非常感谢。

编辑:我的 TreeView 的 XAML 如下所示:

0 投票
1 回答
531 浏览

wpf - 如何将方法绑定到 HoverButton?

我一直在寻找几个小时,但我找不到任何有用的东西。任何帮助表示赞赏!

我正在使用带有 Coding4Fun 工具包和 MVVM 模式的 WPF 编写 Kinect 应用程序。

我想将所有与 kinect 相关的逻辑放在 ViewModel 中,并将这些方法绑定到 HoverButton(在 C4F 工具包中找到)。普通按钮具有“命令”属性,但 HoverButton 没有。

简而言之:

我想将 HoverButton 的单击事件绑定到我的 ViewModel 中的方法。

我的 XAML:

我的视图模型:

我的代码隐藏:

0 投票
1 回答
73 浏览

c# - 如何使用 Icommand 在 wpf 中切换两个菜单项

我有两个 menuItems 绑定到相同的命令“显示图片”和“隐藏图片”,我希望任何时候只有一个项目显示或显示或隐藏。

除了参数之外,Execute 的语法相同。

是否有可能我只能同时显示一个,如果我按下该项目,它会切换到另一个?

谢谢你

0 投票
1 回答
641 浏览

wpf - 我在哪里可以找到 CommandTarget?

我仍在使用 Commands 和 RoutedEvents 进行体验。在不使用 RoutedCommands 的情况下,我尝试实现一个非常简单的程序。

这是我的命令类:

为了确保我对该命令具有静态访问权限,我创建了一个静态类来保存所有命令:

这是您将在我的 MainWindow.xaml 中找到的内容:

我想要的是通过单击menue1-item 'mainTextBox'的背景发生变化。那么让我们看看我的 MainWindow.cs 内部:

该程序正在工作 - 但不正确:) 它总是改变 MainWindow 的背景,但不是我的 CommandTarget。

那么 - 我做错了什么?我是不是忘记了什么?

0 投票
1 回答
14508 浏览

c# - 如何使用其 CanExecute 方法启用按钮

我正在使用 MVVM 在 WPF 中开发一个应用程序,但我被 ICommand 对象困住了。

我有一个包含一些按钮的窗口,因此,我将它们绑定到 XAML 中各自的 ICommand,如下所示:

然后,在我的视图模型类中,我编写了以下内容:

因此,由于我需要在第一次打开窗口时不启用我的按钮,所以我将变量设置isDoSomethingButtonEnabledfalse. 它可以工作,按钮在开始时被禁用,但我的问题是当我在运行时将变量更改为isDoSomethingButtonEnabledtrue的按钮仍然被禁用。

isDoSomethingButtonEnabled在将变量更改为后,我什至做了一些测试true,打印结果DoSomethingCommand.CanExecute()并显示“真”!

那么,我应该怎么做才能启用我的按钮?

先感谢您

0 投票
1 回答
404 浏览

wpf - 隧道命令

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

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

0 投票
3 回答
861 浏览

windows-runtime - WinRT 自定义控件 - 无法绑定 IMvxCommand 类型的 DependencyProperty,但可以在类型更改为 RelayCommand 或 ICommand 时绑定

在昨天的 WP2W8 伦敦活动中,我尝试将现有的 WP7 自定义控件移植到 WinRT(5 月 31 日发布候选版本)

这个自定义控件有一个属性,声明如下:

无论我尝试什么,我都无法绑定 - 输出窗口调试绑定错误总是报告绑定无法将类型转换MvxRelayCommandIMvxCommand

但是,如果我更改IMvxCommandMvxRelayCommandICommand然后绑定有效。

这里的继承树是MvxRelayCommandIMvxCommand继承自继承的System.Windows.Input.ICommand——但我确实怀疑 WinRT 可能会ICommand在后台进行一些时髦的类型重定向。

有没有人了解是否IMvxCommand可以ICommand在 WinRT 自定义控件中使用依赖属性?


更新 - 一个示例项目是:https ://github.com/slodge/WinRTInterfaceBindingProblem

0 投票
1 回答
4889 浏览

c# - ICommand 方法执行参数值

我尝试从 wpf 中理解 ICommand。

在我的 Event 类中,我实现了 ICommand 及其方法。

一种方法是执行:

现在是我的问题:什么值包含参数parameterfrom Execute