【问题标题】:Expose multiple command in WPF user control在 WPF 用户控件中公开多个命令
【发布时间】:2010-10-08 13:13:07
【问题描述】:

希望有更好的解释:

  • 我有一个工具栏,上面有 3 个按钮,所有三个按钮都绑定到一个命令(包括一个命令参数)
  • 此工具栏用于多个屏幕
  • 工具栏的 xaml 在所有这些屏幕上都完全相同

我想删除工具栏实例并将其替换为提供 3 个命令的用户控件,这样我就可以在每个屏幕中保留绑定。计划稍后更改工具栏功能,但外部编程接口(即 3 个命令)是相同的。

所以:

  • 我创建了一个用户控件,并为每个命令(OneCommand、OneCommandParameter、OneCommandTarget)创建了 3 组依赖属性,因此我可以将它们用于绑定。
  • 我在用户控件 xaml 中移动了工具栏 xaml。
  • 我修改了工具栏按钮上的绑定以绑定到内部用户控件属性
  • 在每个屏幕上(或者实际上,目前只有第一个屏幕)我用用户控件替换了原始工具栏,将新属性绑定到正确的命令。

控件显示,但按钮不起作用。 就是这样。

--

原始解释 - 不太清楚:

我有一个封装了许多按钮的 WPF 用户控件。以前,该控件是一个带有许多按钮的工具栏,但由于我需要在多个屏幕上具有完全相同的功能,因此我将工具栏重构为自定义控件。

但是,我想保留原始按钮的命令绑定。

  • 我在用户控件上创建了 3 组依赖属性(XCommand、XCommandParameter 和 XCommandTarget)。
  • 在用户控件 xaml 中,我将“真实”按钮绑定到这些属性(每个按钮到每组属性)。
  • 在我使用用户控件的地方,我将新属性绑定到真正的命令绑定。

本质上,我想为用户控件公开的每个“命令”保留 ICommandSource 功能。但是,这种双重数据绑定方案似乎不起作用,或者我做错了什么。 :)

有没有更好的方法来做到这一点?我所需要的只是将控件外部的命令“桥接”到内部按钮,以便保留 Execute 和 CanExecute 功能。

【问题讨论】:

  • 你能解释一下你想要做的更多...我不太明白。原始按钮是否分配了命令? CommandBinding 在哪里实现?目前究竟有什么不起作用?
  • 现在更好的解释。我希望。

标签: c# wpf wpf-controls command routed-commands


【解决方案1】:

我解决了这个问题。我的内部控件绑定中的 RelativeSource 存在错误。现在可以正常工作了。

【讨论】:

  • 如果您告诉我们如何您解决了它会更有帮助。 SO 问题应该是可重复使用的,以便下一个遇到相同问题的人可以使用您的答案。 ;)
猜你喜欢
  • 1970-01-01
  • 2012-09-11
  • 1970-01-01
  • 2011-05-08
  • 2011-08-18
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 2011-08-16
相关资源
最近更新 更多