Wpf 如何绑定UserControl类型对象的可观察集合

Wpf 如何绑定UserControl类型对象的可观察集合,wpf,data-binding,user-controls,telerik,observablecollection,Wpf,Data Binding,User Controls,Telerik,Observablecollection,我在WPF中遇到了一个数据绑定问题。以下是场景 我有一个Telerik的RadTileView,它绑定到类型为MyItem的observeCollection public class MyItem : UserControl { public string Title { get; set; } public string Content { get; set; } } ObservableCollection的填充方式如下:

我在WPF中遇到了一个数据绑定问题。以下是场景

我有一个Telerik的
RadTileView
,它绑定到类型为
MyItem
observeCollection

public class MyItem : UserControl
    {
        public string Title { get; set; }
        public string Content { get; set; }
    }
ObservableCollection
的填充方式如下:

        private ObservableCollection<MyItem> items_ = null;
        public ObservableCollection<MyItem> TileItems
        {
            get 
            {
                if (items_ == null)
                {
                    items_ = new ObservableCollection<MyItem>();
                    items_.Add(new MyItem() { Title = "ABC", Content = "Test Content" });
                    items_.Add(new MyItem() { Title = "DEF", Content = "Test Content1" });
                    items_.Add(new MyItem() { Title = "GHI", Content = "Test Content2" });
                }

                return items_;
            }
            set 
            {
                items_= value;
                OnPropertyChanged("TileItems");
            }
        }
当我运行上面的代码时,它显示了三个空的
RadTileView
,但它们是空的,如图所示

如果我将
MyItem
更改为

    public class MyItem
    {
        public string Title { get; set; }
        public string Content { get; set; }
    }
然后它开始按预期工作,如图所示

当我从
UserControl
继承
MyItem
时,我无法找出数据绑定的问题所在

编辑:
我的要求是在
RadTileView
的内容区域显示自定义用户控件,在
RadTileView
的标题区域显示标题文本,如何实现?

如果项目不是数据、简单明了,控件将不使用数据模板。如果类应该是数据,则不要从
UserControl
继承(如果这样做,也会破坏模型-视图分离)

RadTileView
仅将项目作为一个实体进行评估,因此,如果项目作为一个整体被视为可显示,则忽略数据模板。如果必须执行此操作,请将
UserControl
移动到一个属性,并在
ContentTemplate
中使用该属性(其中仅包含一个
ContentPresenter
内容
绑定到包含
UserControl
的属性)


如果要坚持模型-视图分离,则不应从任何UI相关类继承,并且
内容
应包含数据,然后可以使用所需的
用户控件
内容模板
中对其进行模板化

我认为您不能这样做,因为您正在绑定UIElements。因此,WPF将使用它们作为其项,而不是类属性。

项实际上将包含自定义的
UserControls
,我刚才在这里展示了一个示例。有什么解决方法吗?@Ummar:逻辑上不可能,您想显示您定义的
UserControl
ItemTemplate
吗?它不能两者都是,如果你有一个
UIElement
,它只会按原样显示,而忽略
ItemTemplate
。它将包含浏览器控件或任何其他控件,用户可以在一个新的
RadTileView
中创建和加载这些控件。我希望它能澄清这个问题,仅供参考,我正在使用PRISM和MEF。@Ummar:不,它没有
UserControl
vs.
ItemsControl.ItemTemplate
,你还不明白吗?@Ummar:这更清楚了,答案仍然是,这不能起作用,因为项目仅由
RadTileView
作为一个实体进行评估,因此如果项目作为一个整体被认为是可显示的,那么模板将被忽略。正如我所说的,无论如何都不应该让集合包含UIElements,因为这违反了模型-视图分离,如果必须这样做,请将UserControl移动到属性,并在
ContentTemplate
(它只包含一个
ContentPresenter
内容绑定到包含
UserControl
的属性)
    public class MyItem
    {
        public string Title { get; set; }
        public string Content { get; set; }
    }