DataTemplate 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
데이터 개체의 표시 구조에 대해 설명합니다. 데이터 값을 표시하는 템플릿의 특정 요소에 데이터 바인딩을 사용합니다.
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DataTemplate : FrameworkTemplate, IElementFactory
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class DataTemplate : FrameworkTemplate, IElementFactory
Public Class DataTemplate
Inherits FrameworkTemplate
Implements IElementFactory
- 상속
- 특성
- 구현
예제
다음 예제에서는 DataTemplate을 사용하여 ListView의 항목을 표시합니다. 이 예제에서 ListView 는 개체 컬렉션 Customer
에 바인딩됩니다. DataTemplate에는 , LastName
및 Address
속성에 바인딩하는 TextBlock 컨트롤이 FirstName
포함되어 있습니다. 데이터 바인딩에 대한 자세한 내용은 데이터 바인딩 심층 정보를 참조하세요.
<Grid>
<Grid.Resources>
<local:Customers x:Key="customers"/>
</Grid.Resources>
<ListView ItemsSource="{StaticResource customers}"
Width="350" Margin="0,4,0,8">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:Customer">
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{x:Bind LastName}"/>
<TextBlock Text="," Margin="0,0,2,0"/>
<TextBlock Text="{x:Bind FirstName}"/>
</StackPanel>
<TextBlock Text="{x:Bind Address}" Margin="8,0,0,2"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
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("Seo-yun", "Jun",
"56 East Seventh Street, Apartment 89"));
Add(new Customer("Guido", "Pica",
"78 South Ninth Street, Apartment 10"));
}
}
설명
DataTemplate
개체는 다음 속성의 값으로 사용됩니다.
- ItemsControl.ItemTemplate(ListView, GridView, ListBox와 같은 다양한 항목 컨트롤에서 상속됨)
- ContentControl.ContentTemplate ( Button, Frame, SettingsFlyout과 같은 다양한 콘텐츠 컨트롤에서 상속됨)
-
HeaderTemplate
및FooterTemplate
다양한 항목 컨트롤 클래스의 속성 - ItemsPresenter.HeaderTemplate 및 ItemsPresenter.FooterTemplate
-
HeaderTemplate
및FooterTemplate
RichEditBox, TextBox와 같은 텍스트 컨트롤의 속성 -
HeaderTemplate
ComboBox, DatePicker, Hub, HubSection, Pivot, Slider, TimePicker, ToggleSwitch와 같은 컨트롤의 속성입니다. 이들 중 일부는 또한FooterTemplate
일반적으로 DataTemplate을 사용하여 데이터의 시각적 표현을 지정합니다. DataTemplate 개체는 ListBox와 같은 ItemsControl을 전체 컬렉션에 바인딩할 때 특히 유용합니다. 특정 지침이 없으면 ListBox 는 컬렉션에 있는 개체의 문자열 표현을 표시합니다. DataTemplate을 사용하여 각 데이터 개체의 모양을 정의합니다. DataTemplate의 콘텐츠는 데이터 개체의 시각적 구조가 됩니다.
일반적으로 DataTemplate에서 데이터 바인딩을 사용합니다. 예를 들어 ListView 가 개체 컬렉션 Customer
에 바인딩되고 ItemTemplate 속성이 DataTemplate 으로 설정되어 있다고 가정합니다.
ListView를 만들면 컬렉션의 각 Customer
항목에 대해 ListViewItem이 만들어지고 ListViewItem의 DataContext가 적절한 고객으로 설정됩니다. 즉, 첫 번째 ListViewItem의 DataContext는 첫 번째 고객으로 설정되고, 두 번째 ListViewItem의 DataContext는 두 번째 고객으로 설정됩니다. DataTemplate의 요소를 바인딩하여 각 Customer
개체에서 제공되는 속성 값을 표시할 수 있습니다.
DataTemplate을 사용하여 여러 ContentControl 개체에서 UIElement 개체를 공유할 수도 있습니다. 예를 들어 동일한 그래픽을 사용하려면 애플리케이션에 여러 단추가 필요하다고 가정합니다. 그래픽이 포함된 DataTemplate을 만들고 단추의 ContentTemplate 으로 사용할 수 있습니다. ContentTemplate에 대한 데이터 템플릿은 데이터 바인딩을 사용할 수도 있습니다. 그러나 이 경우 데이터 컨텍스트는 템플릿이 적용된 요소와 동일합니다. 일반적으로 이 개체는 하나의 데이터 개체이며 항목의 개념은 없습니다.
DataTemplate을 XAML에서 ItemTemplate 속성 요소의 직접 자식으로 배치할 수 있습니다. 이는 인라인 템플릿 으로 알고 있으며 UI의 다른 영역에 동일한 데이터 템플릿을 사용할 필요가 없는 경우 이 작업을 수행합니다. DataTemplate을 리소스로 정의한 다음 , ItemTemplate 속성 값으로 리소스를 참조할 수도 있습니다. 리소스가 되면 데이터 템플릿이 필요한 여러 UI 요소에 대해 동일한 템플릿을 사용할 수 있습니다. 데이터 템플릿을 Application.Resources로 팩터링하는 경우 UI의 여러 페이지에 대해 동일한 템플릿을 공유할 수도 있습니다.
데이터 템플릿의 콘텐츠에 대한 XAML 사용은 설정 가능한 코드 속성으로 노출되지 않습니다. DataTemplate에 대한 XAML 처리에 기본 제공되는 특수 동작입니다.
고급 데이터 바인딩 시나리오의 경우 데이터의 속성이 UI 표현을 생성해야 하는 템플릿을 결정하도록 할 수 있습니다. 이 시나리오에서는 DataTemplateSelector를 사용하고 ItemTemplateSelector와 같은 속성을 설정하여 데이터 뷰에 할당할 수 있습니다. DataTemplateSelector는 직접 작성하는 논리 클래스로, 데이터와 상호 작용하는 사용자 고유의 논리에 따라 바인딩 엔진에 정확히 하나의 DataTemplate을 반환하는 메서드가 있습니다. 자세한 내용은 데이터 바인딩 심층 분석을 참조하세요.
XAML 연결 속성
DataTemplate은 XAML 연결 속성에 대한 호스트 서비스 클래스입니다.
연결된 속성에 대한 XAML 프로세서 액세스를 지원하고 동등한 get 및 set 작업을 코드에 노출하기 위해 연결된 각 XAML 속성에는 Get 및 Set 접근자 메서드 쌍이 있습니다. 코드에서 값을 얻거나 설정하는 또 다른 방법은 종속성 속성 시스템을 사용하여 GetValue 또는 SetValue 를 호출하고 식별자 필드를 종속성 속성 식별자로 전달하는 것입니다.
연결된 속성 | 설명 |
---|---|
ExtensionInstance | 데이터 템플릿의 단계적 렌더링을 위한 도우미 메서드를 정의하는 확장 instance 가져오거나 설정합니다.
|
생성자
DataTemplate() |
DataTemplate 클래스의 새 instance 초기화합니다. |
속성
Dispatcher |
항상 Windows 앱 SDK 앱에서 를 반환 |
DispatcherQueue |
|
ExtensionInstanceProperty |
ExtensionInstance XAML 연결된 속성을 식별합니다. |
연결된 속성
ExtensionInstance |
데이터 템플릿의 단계적 렌더링을 위한 도우미 메서드를 정의하는 확장 instance 가져오거나 설정합니다. |