【问题标题】:Simple Binding question, unable to bind to button command in a DataTemplate using MVVM Light Toolkit简单绑定问题,无法使用 MVVM Light Toolkit 绑定到 DataTemplate 中的按钮命令
【发布时间】:2011-02-23 23:42:57
【问题描述】:

我一直在尝试绑定到 DataTemplate 中的按钮,但没有取得多大成功。该按钮不触发。按钮单击在 DataTemplate 之外成功工作。但是,如果我创建 Click="button_click",则会触发单击按钮。按钮内容也完美绑定。

举例说明..

为什么命令不触发?关于如何处理的建议?该示例是我的实际问题的简化版本,我目前没有使用列表框。我只用列表框重新创建了同样的问题..

【问题讨论】:

  • 你能粘贴你的代码吗,你使用命令并执行它的那个。
  • 奇怪,我贴了。我将建立另一个示例。
  • 抱歉格式化。奇怪的是,当我去编辑它时,原始示例就在问题的主体中。按钮获取内容绑定而不是命令绑定似乎很奇怪。我再次在其正上方的画布中使用相同的按钮。我希望绑定一个包含某种对象键的命令参数......但即使是让事件触发也没有骰子。
  • DataContext 正在切换不是吗..

标签: silverlight binding datatemplate mvvm-light


【解决方案1】:

我曾经问过同样的问题,自己想出了答案,看到这个问题:

How to connect a Button in a Silverlight ListItem DataTemplate, in a ResourceDictionary (Styles.xaml), with a handler?

解决方案似乎是使用 在此处“嵌套”视图模型:

换句话说,与其拥有我的 ListBox 直接绑定到集合 DTO /业务对象(就像我一样 在上面做)我创建了一个 用于包装每个 DTO 的简单 ViewModel,以及 有命令,而不是 原始的顶级 VM。

这看起来像一个sln?

【讨论】:

  • 是的,这是肯定的。我实际上最终实现了完全相同的事情。我遇到的真正问题是面板控件,我想使用面板上的按钮删除面板。在我看来,使用父视图模型绑定变得不那么干净了。需要一个键或索引来绑定到命令参数,我宁愿根本不使用命令参数。每次想到使用它,我都会质疑我的攻击方法。通常,如果我需要它,我做错了什么。感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 2015-06-07
相关资源
最近更新 更多