一个更好的解释,我希望:
- 我有一个带有 3 个按钮的工具栏,所有三个按钮都绑定到一个命令(包括一个命令参数)
- 此工具栏用于多个屏幕
- 工具栏的 xaml 在所有这些屏幕上都完全相同
我想删除工具栏实例并将其替换为提供 3 个命令的用户控件,这样我就可以在每个屏幕中保留绑定。计划稍后更改工具栏功能,但外部编程接口(即 3 个命令)是相同的。
所以:
- 我创建了一个用户控件,并为每个命令(OneCommand、OneCommandParameter、OneCommandTarget)创建了 3 组依赖属性,因此我可以将它们用于绑定。
- 我在用户控件 xaml 中移动了工具栏 xaml。
- 我修改了工具栏按钮上的绑定以绑定到内部用户控件属性
- 在每个屏幕上(或者实际上,现在只有第一个屏幕)我用用户控件替换了原始工具栏,将新属性绑定到正确的命令。
控件显示,但按钮不起作用。就是这样。
--
原始解释 - 不太清楚:
我有一个封装了许多按钮的 WPF 用户控件。以前,该控件是一个带有许多按钮的工具栏,但由于我需要在多个屏幕上具有完全相同的功能,因此我将工具栏重构为自定义控件。
但是,我想保留原始按钮的命令绑定。
- 我在用户控件上创建了 3 组依赖属性(XCommand、XCommandParameter 和 XCommandTarget)。
- 在用户控件 xaml 中,我将“真实”按钮绑定到这些属性(每个按钮到每组属性)。
- 在我使用用户控件的地方,我将新属性绑定到真正的命令绑定。
本质上,我想为用户控件公开的每个“命令”保留 ICommandSource 功能。但是,这种双重数据绑定方案似乎不起作用,或者我做错了什么。:)
有一个更好的方法吗?我所需要的只是将控件外部的命令“桥接”到内部按钮,以便保留 Execute 和 CanExecute 功能。