将DataTemplate应用于从FrameworkElement派生的类型

4
我有一个自定义的“页面”列表,每个页面代表不同的UI视图。它们有一些简单的属性,如字符串标题和图标,但它们也有许多复杂的属性,包括要插入主工具栏的控件、主内容区域、自定义状态栏面板等。页面类型派生自FrameworkElement,以便在每个页面的XAML中正常工作。到目前为止,我描述的一切都很好。
问题出现在我尝试快速列出所有页面时。我有一个ItemsControl,它绑定到活动页面的列表,并且一个DataTemplate分配给一个ItemTemplate,它只由一个标签组成,绑定到页面的Title属性(如上所述,它只是一个普通的字符串)。然而,当我运行它时,列表中没有显示任何内容,并且我在错误输出中得到了以下信息:

System.Windows.Data Error: 25 : ItemTemplate and ItemTemplateSelector are not valid for item.; Type='WelcomePage'

如果我将基础类型更改为除FrameworkElement之外的任何类型,则模板有效,但每个页面内的数据绑定会严重失效(通过ElementName绑定项失败,尽管涉及的两个控件都是共同的FrameworkElement的子控件,这在页面的XAML中定义)。
有没有人知道一种方法,可以使DataTemplate适用于派生自FrameworkElement类型的类型,或者在由非FrameworkElement根据的XAML文件中使数据绑定工作?

如果您仍然有兴趣得到答案,能否发布从FrameworkElement派生的类型的代码?FrameworkElement具有许多属性和方法,没有默认实现,并假定派生类将提供正确的管道。其他从FrameworkElement派生的类提供了实现,这就是为什么如果更改类类型,事情会起作用的原因。 - Benjamin Gale
1个回答

0

虽然现在可能对你没有什么帮助,但我在类似的情况下遇到了同样的问题。我只是用listview替换了项控件。因为使用listbox会导致我出现其他绑定错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接