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

속성 값

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. 설명 된 정적 생성자는 일부 전용 초기화 함수를 참조 하 고, 클래스 처리기를 등록 하 고, 다른 공용 컨트롤 서브클래싱 시나리오를 등록 하 고, 라우트된 이벤트를 처리 된 것으로 표시 및 클래스 처리를참조 하 고, 마지막으로 DefaultStyleKey 클래스의 종속성 속성 메타 데이터를 재정의 NumericUpDownThe 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()
        {
            InitializeCommands();

            // Listen to MouseLeftButtonDown event to determine if slide should move focus to itself
            EventManager.RegisterClassHandler(typeof(NumericUpDown), 
                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()
            InitializeCommands()

            ' 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

이 예제에 대 한 전체 소스 코드는 c #Visual Basic에 대 한 GitHub에서 사용할 수 있습니다.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. 컨트롤을 파생 하는 경우 OverrideMetadata DefaultStyleKeyProperty 컨트롤 파생 클래스의 정적 생성자 내에서 식별자에 대해 메서드를 호출 하거나 해당 하는 클래스 초기화를 호출 합니다.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

적용 대상

추가 정보