1

我被困在 WPF 中的数据绑定问题上。以下是场景。

我有一个绑定到type的TelerikRadTileViewObservableCollectionMyItem

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");
            }
        }

而且XAML

<DataTemplate x:Key="headerTemplate">
                        <TextBlock Text="{Binding Title, Converter={StaticResource debugconv}}"></TextBlock>
                    </DataTemplate>

<telerik:RadTileView x:Name="WidgetTileView"
                                      ItemsSource="{Binding TileItems}" ColumnWidth="Auto"
                              ItemTemplate="{StaticResource headerTemplate}">
                </telerik:RadTileView>

当我运行上面的代码时,它显示三个空RadTileView但它们是空的,如图 空瓷砖

如果我改变MyItemas

    public class MyItem
    {
        public string Title { get; set; }
        public string Content { get; set; }
    }

然后它开始按预期工作,如图 正确的 RadTileView

MyItem当我从继承时,我无法弄清楚数据绑定有什么问题UserControl

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

4

2 回答 2

2

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

该项目仅被评估为一个实体,RadTileView因此如果项目作为一个整体被认为是可显示的,则忽略数据模板。如果您必须这样做,则将 移动UserControl到一个属性并在 中使用它ContentTemplate(它只包含与包含 的属性的ContentPresenter绑定)。ContentUserControl

如果你想坚持模型-视图分离,你不应该从任何与 UI 相关的类继承并且你Content应该包含数据,然后可以在你想要的模板中进行模板ContentTemplateUserControls

于 2012-08-24T17:07:52.410 回答
0

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

于 2012-08-24T17:19:13.323 回答