0

一个更好的解释,我希望:

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

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

所以:

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

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

--

原始解释 - 不太清楚:

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

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

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

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

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

4

1 回答 1

-5

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

于 2009-02-19T12:24:57.807 回答