在WPF用户控件中公开多个命令

时间:2009-02-19 09:37:32

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

更好的解释,我希望:

  • 我有一个带有3个按钮的工具栏,所有三个都绑定到一个Command(包括一个CommandParameter)
  • 此工具栏用于多个屏幕
  • 工具栏的xaml与所有这些屏幕完全相同

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

所以:

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

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

-

原始解释 - 不太清楚:

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

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

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

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

有更好的方法吗?我只需要将控件外部的命令“桥接”到内部按钮,这样就可以保留Execute和CanExecute功能。

1 个答案:

答案 0 :(得分:-4)

我解决了这个问题。我的RelativeSource在内部控件绑定中有一个错误。它现在按预期工作正常。