【发布时间】:2011-01-05 00:23:49
【问题描述】:
我的应用中有一个自定义“页面”列表。每个页面代表一个不同的 UI 视图。它们有一些简单的属性,如字符串标题和图标,但它们也有许多复杂的属性,包括插入主工具栏的控件、主要内容区域、自定义状态栏面板等。页面类型源自FrameworkElement 以便数据绑定在每个页面的 XAML 中正常工作。到目前为止,我所描述的一切都很棒。
当我试图快速抛出所有页面的列表时,问题就出现了。我有一个 ItemsControl 绑定到活动页面列表,还有一个 DataTemplate 分配给 ItemTemplate 仅包含绑定到页面的 Title 属性的标签(如前所述,它只是一个纯字符串)。但是,当我运行它时,列表中没有显示任何内容,并且我在错误输出中得到了这个:
System.Windows.Data 错误:25:ItemTemplate 和 ItemTemplateSelector 对项目无效。; Type='WelcomePage'
如果我将基本类型更改为除FrameworkElement 之外的任何内容,则模板可以正常工作,但每个页面中的数据绑定会严重崩溃(通过ElementName 绑定到项目失败,尽管所涉及的两个控件都是公共@987654328 的子项@,在页面的 XAML 中定义)。
任何人都知道如何让 DataTemplate 应用于 FrameworkElement 派生类型或让数据绑定在以非 FrameworkElement 为根的 XAML 文件中工作?
【问题讨论】:
-
如果您仍然有兴趣获得这个问题的答案,您能否发布您的从 FrameworkElement 派生的类型的代码?框架元素有很多没有默认实现的属性和方法,并假设派生类将提供正确的管道。从 FrameworkElement 派生的其他类提供了实现,这就是如果您更改类类型,事情就会起作用的原因。
标签: wpf datatemplate frameworkelement