这是Thiado de Arruda发布的问题的后续。简而言之,他希望在他的 generic.xaml 文件中有一个 DataTemplate,但没有应用该模板。
给出的答案建议将 DataTemplate 放在托管他的自定义类型的控件的 ControlTemplate.Resources 中。这非常有效,但是,假设他需要将 DataTemplate 应用到其他地方,而不仅仅是在主机控件中。是否有必要将 DataTemplate 复制到每个其他主机控件的 ControlTemplates 中?
编辑(重申问题):
我正在使用 MVVM 设计原则开发 WPF 应用程序。 MainWindow.xaml包含 UI 的结构,所有样式都编码在Themes\generic.xaml中。(行为编码在单独的视图模型类中,但这无关紧要。)作为 UI 的一部分,我创建了ListBox
( MyListBoxSubClass
) 的子类来显示我自己创建的普通 .Net 对象的集合 ( MyObject
)。 在generic.xaml中有一个重新定义属性MyListBoxSubClass
的样式,它会按预期应用。我也有一个for in generic.xaml,但这没有得到应用。根据上面的链接,我必须将Template
DataTemplate
MyObject
DataTemplate
Resources
ControlTemplate
因为MyListBoxSubClass
为了DataTemplate
应用这个。这非常有效。
我的问题是如何在我的应用程序DataTemplate
中应用到MyObject
任何地方而不必复制DataTemplate
? 我已经尝试DataTemplate
在我需要的地方添加一个密钥并引用它,但由于某种原因,我在运行时收到 XAML 解析错误,并且 Resharper 说它无法解析我的DataTemplate
密钥。