DataTemplate クラス
目次を折りたたむ
目次を展開する

DataTemplate Class

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

継承

Object
  DependencyObject
    FrameworkTemplate
      DataTemplate

構文


public class DataTemplate : FrameworkTemplate


<DataTemplate ...>
  templateContent
</DataTemplate>
 


XAML Values

templateContent

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

属性

[MarshalingBehavior(Agile)]
[Threading(Both)]
[Version(0x06020000)]
[WebHostHidden()]

メンバー

DataTemplateクラス には次の種類のメンバーがあります。

コンストラクター

DataTemplateクラス にはこれらのコンストラクターがあります。

コンストラクター説明
DataTemplate Initializes a new instance of the DataTemplate class.

 

メソッド

The DataTemplate クラス には次のメソッドがあります。 また、以下からもメソッドが継承されます。Object クラス.

メソッド説明
ClearValue Clears the local value of a dependency property. (継承元 DependencyObject)
GetAnimationBaseValue Returns any base value established for a dependency property, which would apply in cases where an animation is not active. (継承元 DependencyObject)
GetValue Returns the current effective value of a dependency property from a DependencyObject. (継承元 DependencyObject)
LoadContent Creates the UIElement objects in the DataTemplate.
ReadLocalValue Returns the local value of a dependency property, if a local value is set. (継承元 DependencyObject)
SetValue Sets the local value of a dependency property on a DependencyObject. (継承元 DependencyObject)

 

プロパティ

DataTemplateクラス には次のプロパティがあります。

プロパティアクセスの種類説明

Dispatcher

読み取り専用Gets the CoreDispatcher that this object is associated with. (継承元 DependencyObject)

 

解説

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 として使用できます。

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

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


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

    <ListBox ItemsSource="{StaticResource customers}" Width="350" Margin="0,5,0,10">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Padding="5,0,5,0"
          Text="{Binding FirstName}" />
                    <TextBlock Text="{Binding LastName}" />
                    <TextBlock Text=", " />
                    <TextBlock Text="{Binding Address}" />
                </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 8 [Windows ストア アプリのみ]

最小限サポートされるサーバー

Windows Server 2012 [Windows ストア アプリのみ]

名前空間

Windows.UI.Xaml
Windows::UI::Xaml [C++]

メタデータ

Windows.winmd

参照

FrameworkTemplate
ItemsControl.ItemTemplate
ContentControl.ContentTemplate
ResourceDictionary と XAML リソースの参照

 

 

表示:
© 2018 Microsoft