【发布时间】: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