小背景:我从一个数据库中加载一个WPF UI,该数据库存储在一个属性表(控制类型,标签,边距等)中,我加载到一个类中,我调用了ControlPresenter。基本上,我将ControlPresenter设置为ContentPresenter的DataContext,并使用TemplateSelector来选择要加载的控件类型。 DataTemplate(s)将它们的属性加载到ControlPresenter公开的DependencyProperties之外。如何实现“传递”DataBinding?
这一切都非常有效。当我尝试在其他演示者(具有实现INotifyPropertyChanged的常规属性)中将数据绑定到这些控件时(例如,TextBox的Text属性为演示者的Name属性),我遇到的问题就出现了。该控件的DataContext是关联的ControlPresenter,因此我不能直接绑定到其他演示者,并且我无法在同一个依赖项属性上设置两个绑定(我无法将控件和期望的演示者属性绑定到同一个DP) 。
可能的解决方案:
- 我可以转换所有其他主持人的使用移民(非常耗时而且容易导致与继承问题)
- 我就可以使用两个检测点为每个属性我想要通过并尝试通过更改通知将它们绑定在一起
这两个看起来有问题并且容易打破,所以我希望别人提出了更好的s olution。
编辑:我想出了一个相当不错的解决方案(见下文)。感谢大家看到这个,如果你想出一个比我更好的方法,请让我知道。
嗯,我得看看我是否可以得到选项3号的工作。 – 2009-04-16 13:36:30