问题标签 [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.
wpf - CommandManager.InvalidateRequerySuggested() 不工作
当 wpf 应用程序启动时,我只调用了一次命令的CanExecute方法。我希望能够定期重新评估该方法。我发现了一些关于以编程方式或使用DispatcherTimer调用CommandManager.InvalidateRequerySuggested()的参考。两者都不适合我,并且 CanExecute 在每个应用程序生命周期中只调用一次。
有人知道修复吗?
-pom-
mvvm - 在 MVVM 方法中简化 ICommand/RelayCommand
我正在推动自己使我编写的应用程序更简单,并且我已经采取了一些步骤来做到这一点,但是我遇到了一个有趣的问题,它根本不觉得它对我来说是独一无二的。我想知道我做错了什么。
我有一个保存模型对象集合的 ViewModel。该视图是一个 ListView,它显示集合中的所有对象。模型对象具有操作它们的所有逻辑。在每个项目的 ListView 行内,我都有一个按钮,并且需要连接该按钮才能调用模型对象上的方法。
为了让它工作,我需要添加一个命令绑定,但要添加到父窗口数据上下文,它在行中传递模型对象的参数,以便可以在 ViewModel 中使用模型对象(父窗口数据上下文) 调用传入的模型对象上的方法。
这似乎比它需要的要复杂得多。我愿意扔掉我已经做过的任何事情,没有神圣的奶牛,我只是希望以一种更简单的方法来完成,这样一年后回顾起来很容易弄清楚我在做什么。
c# - 来自其他 ViewModel 的 ViewModel 上的 MVVM 执行命令
我现在为一个简单的任务苦苦挣扎了大约 14 天:在数据库中,我有硬件类别的定义。例如 :
- 硬盘
- 内部的
- 外部的
- 闪光
此列表在数据库中定义如下:
通过实体框架,我将这些行放入我的应用程序中。然后从这个平面数据中创建结构化对象,即我的 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 SelectedCategory
on HWDocumentViewModel
。发生双击时,我将此属性从 SubCategoryViewModel 设置为this
. 因此,在这个属性中是执行双击事件委托的对象。太好了,现在我在 HWDocumentView 模型中有一个用户选择的对象。
所以,我需要将项目加载到 ListView。但是,我会从SubCategoryViewModel中的方法加载它们吗?我不这么认为。相反,我应该通过为它们创建一个 ViewModel 并将其绑定到 ListView 来从主视图模型加载它们,对吗?但是,如何从 SubCategoryViewModel 调用 HWDocumentViewModel 中的方法?我应该在可以从 SubCategoryViewModel 访问的 HWDocumentViewModel 上编写一个静态方法吗?
或者有没有办法,如何从 SubCategoryViewModel 调用在 HWDocumentViewModel 上定义的命令?
或者一般来说,我是否采取了正确的方法在 WPF 中创建类似仓库的应用程序?
非常感谢。
编辑:我的 TreeView 的 XAML 如下所示:
wpf - 如何将方法绑定到 HoverButton?
我一直在寻找几个小时,但我找不到任何有用的东西。任何帮助表示赞赏!
我正在使用带有 Coding4Fun 工具包和 MVVM 模式的 WPF 编写 Kinect 应用程序。
我想将所有与 kinect 相关的逻辑放在 ViewModel 中,并将这些方法绑定到 HoverButton(在 C4F 工具包中找到)。普通按钮具有“命令”属性,但 HoverButton 没有。
简而言之:
我想将 HoverButton 的单击事件绑定到我的 ViewModel 中的方法。
我的 XAML:
我的视图模型:
我的代码隐藏:
c# - 如何使用 Icommand 在 wpf 中切换两个菜单项
我有两个 menuItems 绑定到相同的命令“显示图片”和“隐藏图片”,我希望任何时候只有一个项目显示或显示或隐藏。
除了参数之外,Execute 的语法相同。
是否有可能我只能同时显示一个,如果我按下该项目,它会切换到另一个?
谢谢你
wpf - 我在哪里可以找到 CommandTarget?
我仍在使用 Commands 和 RoutedEvents 进行体验。在不使用 RoutedCommands 的情况下,我尝试实现一个非常简单的程序。
这是我的命令类:
为了确保我对该命令具有静态访问权限,我创建了一个静态类来保存所有命令:
这是您将在我的 MainWindow.xaml 中找到的内容:
我想要的是通过单击menue1-item 'mainTextBox'的背景发生变化。那么让我们看看我的 MainWindow.cs 内部:
该程序正在工作 - 但不正确:) 它总是改变 MainWindow 的背景,但不是我的 CommandTarget。
那么 - 我做错了什么?我是不是忘记了什么?
c# - 如何使用其 CanExecute 方法启用按钮
我正在使用 MVVM 在 WPF 中开发一个应用程序,但我被 ICommand 对象困住了。
我有一个包含一些按钮的窗口,因此,我将它们绑定到 XAML 中各自的 ICommand,如下所示:
然后,在我的视图模型类中,我编写了以下内容:
因此,由于我需要在第一次打开窗口时不启用我的按钮,所以我将变量设置isDoSomethingButtonEnabled
为false
. 它可以工作,按钮在开始时被禁用,但我的问题是当我在运行时将变量更改为isDoSomethingButtonEnabled
我true
的按钮仍然被禁用。
isDoSomethingButtonEnabled
在将变量更改为后,我什至做了一些测试true
,打印结果DoSomethingCommand.CanExecute()
并显示“真”!
那么,我应该怎么做才能启用我的按钮?
先感谢您
wpf - 隧道命令
我有几个在 ListBox 中实例化的用户控件。我的 Window 中有一个按钮 raises NavigationCommands.Refresh
,以及一个CanExecute
允许它执行的处理程序:
在每个动态创建的用户控件(在 ListBox 的 ItemTemplate 中创建)中,我都有一个NavigationCommands.Refresh
. 当我单击窗口中的按钮时,我在每个用户控件中设置的处理程序是否应该不触发?我需要命令来隧道到每个 UC,但它不是。
windows-runtime - WinRT 自定义控件 - 无法绑定 IMvxCommand 类型的 DependencyProperty,但可以在类型更改为 RelayCommand 或 ICommand 时绑定
在昨天的 WP2W8 伦敦活动中,我尝试将现有的 WP7 自定义控件移植到 WinRT(5 月 31 日发布候选版本)
这个自定义控件有一个属性,声明如下:
无论我尝试什么,我都无法绑定 - 输出窗口调试绑定错误总是报告绑定无法将类型转换MvxRelayCommand
为IMvxCommand
但是,如果我更改IMvxCommand
为MvxRelayCommand
或ICommand
然后绑定有效。
这里的继承树是MvxRelayCommand
从IMvxCommand
继承自继承的System.Windows.Input.ICommand
——但我确实怀疑 WinRT 可能会ICommand
在后台进行一些时髦的类型重定向。
有没有人了解是否IMvxCommand
可以ICommand
在 WinRT 自定义控件中使用依赖属性?
更新 - 一个示例项目是:https ://github.com/slodge/WinRTInterfaceBindingProblem
c# - ICommand 方法执行参数值
我尝试从 wpf 中理解 ICommand。
在我的 Event 类中,我实现了 ICommand 及其方法。
一种方法是执行:
现在是我的问题:什么值包含参数parameter
from Execute
?