作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
希望这是一个简单的 MVVM 问题,但我正在尝试掌握命令参数。
我让用户从列表框中选择一个项目,然后单击“删除所选项”。 ListBox 将 SelectedItem 绑定(bind)到“SelectedTemplate”。我的按钮 XAML 如下所示:
<Button CommandParameter="{Binding SelectedTemplate}" Command="{Binding DeleteTemplateCommand}" Content="Delete Selected"/>
当我到达我的执行命令时,我正在从命令中读取参数。但是,我也可以访问“SelectedTemplate”。如果我使用传递的参数,那么我必须在删除对象之前将其转换为正确的对象类型,而不是继续删除“selectedTemplate”
public void DeleteTemplate(object template)
{
Convert.ChangeType(template, typeof(Template));
if (template == SelectedTemplate )
{
_ESTContext.Templates.Remove(SelectedTemplate);
}
}
我的问题是,对我来说,这似乎都满足 MVVM 哲学,使用其中一个有好处/坏处吗?
最佳答案
唯一真正的区别是可读性(并且引擎可能需要评估一个额外的绑定(bind),但在这种情况下这不会真正伤害到您)。
无论哪种方式,您都在使用 SelectedTemplate
,因此我不会费心将它绑定(bind)到参数并直接使用它。
除非那是你唯一使用SelectedTemplate
的东西,在这种情况下我会把它作为一个变量扔掉,并直接绑定(bind)到选择:
<Button CommandParameter="{Binding ElementName=MyListBox, Path=SelectedItem}" Command="{Binding DeleteTemplateCommand}" Content="Delete Selected"/>
关于c# - 将所选项目作为命令参数传递与使用绑定(bind)的 ViewModel 对象 (MVVM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25452189/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!