ControlTemplate 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
컨트롤의 컨트롤 템플릿으로 사용되는 요소 트리를 정의합니다.
UWP에 해당하는 WinUI 2 API: Microsoft.UI.Xaml.Controls.ControlTemplate(Windows 앱 SDK WinUI의 경우 Windows 앱 SDK 네임스페이스 참조).
public ref class ControlTemplate sealed : FrameworkTemplate
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class ControlTemplate final : FrameworkTemplate
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class ControlTemplate final : FrameworkTemplate
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class ControlTemplate : FrameworkTemplate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class ControlTemplate : FrameworkTemplate
Public NotInheritable Class ControlTemplate
Inherits FrameworkTemplate
<ControlTemplate ...>
templateRootElement
</ControlTemplate>
- 상속
- 특성
Windows 요구 사항
| 디바이스 패밀리 |
Windows 10 (10.0.10240.0에서 도입되었습니다.)
|
| API contract |
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)
|
예제
다음 예제에서는 간단한 ControlTemplate을 Button만듭니다. 컨트롤 템플릿은 하나를 Grid 포함하고 이 동작을 지정합니다.
<ControlTemplate TargetType="Button">
<Grid >
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<!--Take one half second to transition to the PointerOver state.-->
<VisualTransition To="PointerOver"
GeneratedDuration="0:0:0.5"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal" />
<!--Change the SolidColorBrush, ButtonBrush, to red when the
Pointer is over the button.-->
<VisualState x:Name="PointerOver">
<Storyboard>
<ColorAnimation Storyboard.TargetName="ButtonBrush"
Storyboard.TargetProperty="Color" To="Red" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid.Background>
<SolidColorBrush x:Name="ButtonBrush" Color="Green"/>
</Grid.Background>
</Grid>
</ControlTemplate>
generic.xaml 파일에서 각 XAML 컨트롤에 대한 전체 템플릿을 볼 수 있습니다. 이 파일은 (Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP<SDK version>\Generic 폴더에 있습니다.
설명
자세한 정보 및 예제는 XAML 컨트롤 템플릿을 참조하세요.
ControlTemplate은 템플릿을 적용하여 컨트롤의 Control.Template 시각적 개체를 정의하는 속성의 값으로 사용됩니다. 을 사용하여 설정하는 Control.Template Setter것과 동일한 암시적 키를 TargetType 사용하여 거의 항상 ControlTemplate을 XAML 리소스로 Style 정의합니다. 컨트롤 인스턴스에서 직접 값을 Control.Template 할당하는 경우는 거의 없습니다.
ControlTemplate TargetType을 정의할 때 사용하는 속성은 실제로 두 가지뿐입니다. 즉, 암시적 XAML 콘텐츠입니다. ControlTemplate은 부모로부터 암시적 XAML 콘텐츠 동작을 FrameworkTemplate 상속합니다. 기본적으로 XAML에 정의된 ControlTemplate 내에 포함된 요소는 템플릿을 정의하는 XAML 요소의 추가 구조에 대한 루트 요소를 할당합니다. 이는 나중에 코드에서 검사할 수 없고 XAML 파서가 해당 템플릿 적용에 따라 컨트롤에 콘텐츠를 할당하는 방법에 대해서만 의미가 있는 "템플릿" 속성을 설정하는 것입니다.
ControlTemplate에서 해당 콘텐츠를 설정하려면 컨트롤 요소가 속성이 있도록 Control.Template 진정한 Control 서브클래스여야 합니다. 템플릿이 콘텐츠를 적용하는 다른 경우가 있지만 일반적으로 다른 FrameworkTemplate 파생 템플릿 클래스(DataTemplate 또는 ItemsPanelTemplate) 중 하나가 포함됩니다.
컨트롤 템플릿은 앱의 UI에 표시되는 컨트롤 인스턴스를 구성하는 시각적 개체 및 파트를 제공합니다. 런타임에 템플릿이 이미 적용되었으므로 템플릿에서 생성된 모든 부분은 이제 컨트롤의 진정한 부분이며 컨트롤 콘텐츠 내에서 XAML 이름 범위를 검사하거나 클래스를 사용하는 VisualTreeHelper 등의 기술로 액세스할 수 있습니다. 입력 이벤트와 같은 이벤트는 적용된 컨트롤 템플릿에서 온 컨트롤의 부분을 노출하는 경우가 있습니다.
템플릿이 특정 컨트롤 인스턴스에 적용되기 전이나 후에 템플릿 정의 콘텐츠에 액세스하는 방법이 있습니다. 참조 OnApplyTemplate 또는 GetTemplateChild.
ControlTemplate이 컨트롤 인스턴스에 적용되는 실제 시점은 보호된 가상 메서드를 호출 OnApplyTemplate 하기 때문에 검색할 수 있습니다. 컨트롤이 봉인되지 않는 한 재정의할 수 있도록 컨트롤을 서브클래스할 OnApplyTemplate수 있습니다. 이 재정의는 템플릿이 적용되기 전에는 가능하지 않은 작업을 수행하도록 작성할 수 있습니다. 예를 들어 이벤트 처리기를 연결하여 파트를 제어하거나 템플릿에서 생성되었지만 {TemplateBinding} 태그 확장 값으로 시작하지 않은 개체 부분을 참조하도록 컨트롤 속성을 설정할 수 있습니다.
생성자
| ControlTemplate() |
ControlTemplate 클래스의 새 인스턴스를 초기화합니다. |
속성
| Dispatcher |
이 개체가 CoreDispatcher 연결된 개체를 가져옵니다. 코드 CoreDispatcher 가 비 UI 스레드에서 시작되는 경우에도 UI 스레드에 액세스할 DependencyObject 수 있는 기능을 나타냅니다. UWP에 해당하는 WinUI 2 API: Microsoft.UI.Xaml.DependencyObject.Dispatcher(Windows 앱 SDK WinUI의 경우 Windows 앱 SDK 네임스페이스 참조). (다음에서 상속됨 DependencyObject) |
| TargetType |
적용할 형식을 ControlTemplate 가져오거나 설정합니다. UWP에 해당하는 WinUI 2 API: Microsoft.UI.Xaml.Controls.ControlTemplate.TargetType(Windows 앱 SDK WinUI의 경우 Windows 앱 SDK 네임스페이스 참조). |
메서드
적용 대상
추가 정보
피드백
다음에 대한 사용자 의견 제출 및 보기