【问题标题】:Apply DataTemplate to type derived from FrameworkElement将 DataTemplate 应用于从 FrameworkElement 派生的类型
【发布时间】: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


【解决方案1】:

并不是说它现在对你有什么好处,但在类似的情况下我也遇到了同样的问题。我刚刚将项目控件替换为listview。因为使用 listbox 会导致我出现额外的绑定错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多