FrameworkElement.DefaultStyleKey 속성


테마 스타일을 사용하거나 정의할 때 이 컨트롤에 대한 스타일을 참조하는 데 사용할 키를 가져오거나 설정합니다.Gets or sets the key to use to reference the style for this control, when theme styles are used or defined.

protected public:
 property System::Object ^ DefaultStyleKey { System::Object ^ get(); void set(System::Object ^ value); };
protected internal object DefaultStyleKey { get; set; }
member this.DefaultStyleKey : obj with get, set
Protected Friend Property DefaultStyleKey As Object

속성 값

스타일 키입니다.The style key. 테마 스타일 조회의 일부로 올바르게 작동하려면 이 값은 스타일이 지정되는 컨트롤의 Type이어야 합니다.To work correctly as part of theme style lookup, this value is expected to be the Type of the control being styled.


다음 예제에 설명에 나와 있는 종속성 속성 메타 데이터 재정의 사용을 보여 줍니다.The following example illustrates the dependency property metadata override usage discussed in Remarks. 이 코드는 전용 컨트롤 라이브러리 어셈블리에서 사용 하기 위한 사용자 지정 컨트롤 클래스 NumericUpDown 정의 합니다.This code defines a custom control class NumericUpDown intended to be used from a dedicated control library assembly. 설명 된 정적 생성자는 일부 전용 초기화 함수를 참조 하 고, 클래스 처리기를 등록 하 고, 다른 일반적인 컨트롤 서브클래싱 시나리오를 등록 하 고, 라우트된 이벤트를 처리 된 것으로 표시 및 클래스 처리를참조 하 고, NumericUpDown 클래스에서 DefaultStyleKey 종속성 속성 메타 데이터를 재정의 합니다.The illustrated static constructor references some private initialization function, registers a class handler (another common control subclassing scenario; see Marking Routed Events as Handled, and Class Handling) and finally overrides the DefaultStyleKey dependency property metadata on the NumericUpDown class. DefaultStyleKey는 항상 고유한 형식을 원하는 키로 반환 합니다 .이는 테마 스타일 시스템에서 스타일이 지정 되지 않은 임의의 컨트롤에 대 한 스타일을 조회 하는 데 사용 하는 규칙입니다.DefaultStyleKey always returns its own type as the intended key, which is the convention that the theme style system uses to look up the style for some arbitrary otherwise non-styled control. 전체 샘플은 해당 키에서 참조 하는 실제 컨트롤의 테마 스타일도 정의 합니다. 테마 및 UI 자동화 지원 샘플이 있는 NumericUpDown 사용자 지정 컨트롤을 참조 하세요.The complete sample also defines the actual control's theme style that is referenced by that key; see NumericUpDown Custom Control with Theme and UI Automation Support Sample.

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Automation.Peers;
using System.Windows.Automation.Provider;
using System.Windows.Automation;
using System.Globalization;
using System.Diagnostics;

namespace CustomControlLibrary
    public partial class NumericUpDown : Control
        static NumericUpDown()

            // Listen to MouseLeftButtonDown event to determine if slide should move focus to itself
                Mouse.MouseDownEvent, new MouseButtonEventHandler(NumericUpDown.OnMouseLeftButtonDown), true);

            DefaultStyleKeyProperty.OverrideMetadata(typeof(NumericUpDown), new FrameworkPropertyMetadata(typeof(NumericUpDown)));
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Input

Namespace CustomControlLibrary
    Public Partial Class NumericUpDown
        Inherits Control

        Shared Sub New()

            ' Listen to MouseLeftButtonDown event to determine if slide should move focus to itself
            EventManager.RegisterClassHandler(GetType(NumericUpDown), Mouse.MouseDownEvent, New MouseButtonEventHandler(AddressOf NumericUpDown.OnMouseLeftButtonDown), True)

            DefaultStyleKeyProperty.OverrideMetadata(GetType(NumericUpDown), New FrameworkPropertyMetadata(GetType(NumericUpDown)))
        End Sub
    End Class
End Namespace

이 예의 전체 소스 코드는 GitHub에서 C#Visual Basic에 대해 사용할 수 있습니다.The complete source code for this example is available on GitHub for both C# and Visual Basic.


이 속성은 일반적으로 직접 속성 접근자의 통해 설정 되지 않습니다.This property is typically not set through any of its direct property accessors. 대신, 새 FrameworkElement 파생 클래스를 만들 때마다이 종속성 속성의 형식 관련 메타 데이터를 재정의 합니다.Instead, you override the type-specific metadata of this dependency property every time you create a new FrameworkElement derived class. 컨트롤을 파생 하는 경우 컨트롤 파생 클래스의 정적 생성자 (또는 해당 클래스 초기화) 내에서 DefaultStyleKeyProperty 식별자에 대해 OverrideMetadata 메서드를 호출 합니다.When you derive a control, call the OverrideMetadata method against the DefaultStyleKeyProperty identifier, within the static constructor of the control derived class (or equivalent class initialization).

컨트롤을 일반적으로 자체 형식으로이 속성의 기본값을 재정의 하지만 일부 경우에 사용할 수도에서 테마 사전 스타일 존재 하는 기본 형식입니다.A control typically overrides the default value of this property to be its own type, but in some cases could also use a base type for which a style in the theme dictionaries exists. 이 기본 컨트롤의 컨트롤 템플릿에 해당 파생된 컨트롤의 시각적 표시를 완전히 정의 및 파생된 형식에서 노출 하는 모든 추가 멤버 컨트롤 템플릿의 일부로 추가 요소를 필요로 하지 않는 경우에 실제.This is only practical if the control templates of the base control entirely define the visual representation of that derived control, and if whatever additional members the derived types expose do not require additional elements as part of the control template.

요소나 컨트롤에서 의도적으로 테마 스타일을 사용 하지 않도록 하려면 OverridesDefaultStyle 속성을 true로 설정 합니다.If you want your element or control to deliberately not use theme styles, set the OverridesDefaultStyle property to true.

종속성 속성 정보Dependency Property Information

식별자 필드Identifier field DefaultStyleKeyProperty
메타 데이터 속성 설정 trueMetadata properties set to true AffectsMeasure

적용 대상

추가 정보