DataTemplate クラス

2013/12/12

データ オブジェクトのビジュアル構造を記述します。

Namespace:  System.Windows
アセンブリ:  System.Windows (System.Windows.dll 内)
XAML の XMLNS: xmlns にマップされていません。

public class DataTemplate : FrameworkTemplate
<DataTemplate ...>
  templateContent
</DataTemplate>

XAML 値

templateContent

この DataTemplate を定義するオブジェクトのツリー。このツリーには 1 つのルート要素が必要で、そのルート要素は 0 個以上の子要素を持つことができます。

DataTemplate 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドDataTemplateDataTemplate クラスの新しいインスタンスを初期化します。
このページのトップへ

  名前説明
パブリック プロパティDispatcherこのオブジェクトに関連付けられている Dispatcher を取得します。 (DependencyObject から継承されます。)
このページのトップへ

  名前説明
パブリック メソッドCheckAccess呼び出しスレッドが、このオブジェクトにアクセスできるかどうかを判断します。 (DependencyObject から継承されます。)
パブリック メソッドClearValue依存関係プロパティのローカル値をクリアします。 (DependencyObject から継承されます。)
パブリック メソッドEquals(Object)指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドGetAnimationBaseValueアニメーションがアクティブでない場合に適用される、Windows Phone 依存関係プロパティに対し設定されている基本値を返します。 (DependencyObject から継承されます。)
パブリック メソッドGetHashCode特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッドGetValueDependencyObject から依存関係プロパティの現在の有効値を返します。 (DependencyObject から継承されます。)
パブリック メソッドLoadContentDataTemplateUIElement オブジェクトを作成します。
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッドReadLocalValueローカル値が設定されている場合、依存関係プロパティのローカル値を返します。 (DependencyObject から継承されます。)
パブリック メソッドSetValueDependencyObject で依存関係プロパティのローカル値を設定します。 (DependencyObject から継承されます。)
パブリック メソッドToString現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)
このページのトップへ

通常、データの視覚表現を指定するには、DataTemplate を使用します。DataTemplate オブジェクトは、ListBox などの ItemsControl をコレクション全体にバインドする場合に特に役立ちます。具体的に指示しなくても、ListBox は、コレクション内のオブジェクトの文字列表現を表示します。この場合、DataTemplate を使用してデータ オブジェクトの外観を定義できます。DataTemplate の内容が、データ オブジェクトのビジュアル構造になります。

データ バインディングは、DataTemplate でも使用できます。たとえば、ListBoxCustomer オブジェクトのコレクションにバインドされ、ItemTemplate プロパティが DataTemplate に設定されているとします。ListBox が作成されると、コレクション内の各 Customer に対して ListBoxItem が作成され、ListBoxItemDataContext が適切な顧客に設定されます。つまり、最初の ListBoxItemDataContext は最初の顧客に、2 番目の ListBoxItemDataContext は 2 番目の顧客にという順番で設定されます。DataTemplate 内の要素を Customer オブジェクトのプロパティにバインドできます。

DataTemplate を使用すると、複数の ContentControl オブジェクト間で UIElement オブジェクトを共有することもできます。たとえば、アプリケーション内の複数のボタンで同じグラフィックスを使用するとします。この場合、グラフィックスを含む DataTemplate を作成し、これをボタンの ContentTemplate として使用できます。詳細については、「ContentControl.ContentTemplate」を参照してください。

DataTemplate は、object.ItemTemplate プロパティ要素の直接の子として配置できます。また、DataTemplate をリソースとして定義し、このリソースを ItemTemplate プロパティの値として参照することもできます。

データ テンプレートを作成するための内容を定義する XAML の使用方法は、設定可能なプロパティとして公開されません。これは、DataTemplate オブジェクト要素の XAML 処理に組み込まれている特別な動作です。

DataTemplate を使用して ListBox の項目を表示する例を次に示します。この例では、ListBox は、Customer オブジェクトのコレクションにバインドされています。DataTemplate には、FirstNameLastNameAddress の各プロパティにバインドされる TextBlock コントロールが含まれています。データ バインディングの詳細については、「Windows Phone のデータ バインディング」を参照してください。


<Grid>
    <Grid.Resources>
        <src:Customers x:Key="customers"/>
    </Grid.Resources>

    <ListBox ItemsSource="{StaticResource customers}" Margin="0,5,0,10">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" >
                    <TextBlock Padding="3,0,3,0"
          Text="{Binding FirstName}" FontSize="{StaticResource PhoneFontSizeSmall}"/>
                    <TextBlock Text="{Binding LastName}" FontSize="{StaticResource PhoneFontSizeSmall}"/>
                    <TextBlock Text=", " FontSize="{StaticResource PhoneFontSizeSmall}"/>
                    <TextBlock Text="{Binding Address}" FontSize="{StaticResource PhoneFontSizeSmall}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>


Customer クラスと ListBox がバインドされるコレクションを次の例に示します。


public class Customer
{
    public String FirstName { get; set; }
    public String LastName { get; set; }
    public String Address { get; set; }

    public Customer(String firstName, String lastName, String address)
    {
        this.FirstName = firstName;
        this.LastName = lastName;
        this.Address = address;
    }

}

public class Customers : ObservableCollection<Customer>
{
    public Customers()
    {
        Add(new Customer("Michael", "Anderberg",
                "12 North Third Street, Apartment 45"));
        Add(new Customer("Chris", "Ashton",
                "34 West Fifth Street, Apartment 67"));
        Add(new Customer("Cassie", "Hicks",
                "56 East Seventh Street, Apartment 89"));
        Add(new Customer("Guido", "Pica",
                "78 South Ninth Street, Apartment 10"));
    }

}


Windows Phone OS

サポート: 8.0, 7.1, 7.0

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

表示:
© 2014 Microsoft