1

私は WPF のデータ バインディングの問題に固執しています。次にシナリオです。

私は、タイプにバインドされているTelerik を持っています。RadTileViewObservableCollectionMyItem

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>

上記のコードを実行すると、3 つの空RadTileViewが表示されますが、図のように空です。 空のタイル

asを変更するMyItem

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

次に、示されているように、期待どおりに機能し始めます RadTileView の修正

MyItemから継承するときのデータ バインディングの問題がわかりませUserControlん。

編集: 私の要件は、のコンテンツ領域にカスタム UserControl をRadTileView表示し、ヘッダー領域にタイトル テキストを表示するRadTileViewことです。どのように達成できますか?

4

2 に答える 2

2

アイテムがデータでなく、プレーンでシンプルな場合、コントロールはデータテンプレートを使用しません。クラスがデータであると想定されている場合は継承しないでくださいUserControl(継承する場合は、model-view-separationも解除します)。

アイテムは1つのエンティティとしてのみ評価されるRadTileViewため、アイテム全体が表示可能と見なされる場合、データテンプレートは無視されます。これを行う必要がある場合はUserControl、をプロパティに移動し、それをで使用しますContentTemplate(これには、を含むそのプロパティへのContentPresenterバインディングが含まれているだけです)。ContentUserControl

モデルビューの分離を順守したい場合は、UI関連のクラスから継承してはならずContent、データを含める必要があります。これは、必要に応じてテンプレート化できContentTemplateますUserControls

于 2012-08-24T17:07:52.410 に答える
0

UIElements をバインドしているため、これを行うことはできないと思います。そのため、WPF はそれらをクラス プロパティではなくアイテムとして使用します。

于 2012-08-24T17:19:13.323 に答える