WindowChrome 클래스

정의

창의 비클라이언트 영역에 대한 사용자 지정을 설명하는 개체를 나타냅니다.

public ref class WindowChrome : System::Windows::Freezable
public class WindowChrome : System.Windows.Freezable
type WindowChrome = class
    inherit Freezable
Public Class WindowChrome
Inherits Freezable
상속

설명

WindowChrome 클래스를 사용 하면 일반적으로 운영 체제의 창 관리자에 대 한 예약 된 창의 비클라이언트 영역에 Windows Presentation Foundation (WPF) 콘텐츠를 확장할 수 있습니다.

표준 Windows

표준 windows 두 개의 겹치는 사각형으로 구성 됩니다. 외부 사각형은는 비클라이언트 영역에 종종 라고 chrome합니다. 그린 이며 운영 체제의 창 관리자가 관리 합니다. 크기는 표준 운영 체제 설정에 따라 결정 됩니다. 비클라이언트 프레임 표준 창 기능 및 동작을 제공합니다. 캡션 단추 (최소화, 최대화 및 닫기)를 포함 하는 이러한 창 테두리를 조정 하 고 동작, 애플리케이션 아이콘 및 제목 및 시스템 메뉴를 이동 합니다. 내부 사각형은는 클라이언트 영역합니다. 애플리케이션의 내용을 포함 하 고 그려지고 애플리케이션에 의해 관리 됩니다. WPF 애플리케이션에서 windows에 대 한 자세한 내용은 참조 하세요. WPF Windows 개요합니다.

다음 그림에서는 표준 창 부분을 보여줍니다.

Window 요소

사용자 지정 Windows

창의 테두리를 설정 하 여 사용자 지정할 수 있습니다 합니다 Window.WindowStyle 속성을 None 또는 사용 하 여는 WindowChrome 클래스입니다.

WindowStyle.None

WPF 애플리케이션 창의 모양을 사용자 지정 하는 한 가지 방법은 설정 하는 것은 Window.WindowStyle 속성을 None입니다. 이 창에서 비클라이언트 프레임을 제거 하 고만 클라이언트 영역에서, 사용자 지정 스타일을 적용할 수 있습니다. 그러나 비클라이언트 프레임 제거 되 면 또한 잃게 시스템 기능과 캡션 단추 및 창 크기 조정 등에서 제공 하는 동작입니다. 또 다른 부작용은 창은 최대화 되었을 때 Windows 작업 표시줄을 다루지 것입니다. 설정 WindowStyle.None 표준 창 동작을 에뮬레이트하는 데 애플리케이션에서 사용자 지정 논리를 구현 하는 필요 하지만 완전 한 사용자 지정 애플리케이션을 만들 수 있습니다.

WindowChrome

해당 표준 기능을 유지 하는 동안 창 사용자 지정을 사용할 수 있습니다는 WindowChrome 클래스입니다. WindowChrome 클래스는 시각적 개체에서 창 프레임의 기능을 분리 하 고 클라이언트와 애플리케이션 창의 비클라이언트 영역 간 경계를 제어할 수 있습니다. WindowChrome 클래스 비클라이언트 영역에 맞게 클라이언트 영역을 확장 하 여 WPF 창 프레임의 콘텐츠를 삽입할 수 있습니다. 동시에 두 보이지 않는 영역을 통해 시스템 동작을 유지 테두리 크기를 조정할 하 고 캡션 영역입니다.

사용 하 여 사용자 지정 창을 만드는 두 주요 부분을 가지는 WindowChrome 클래스입니다. 창의 비클라이언트 부분에 노출 된 속성을 설정 하 여 사용자 지정 먼저는 WindowChrome 개체입니다. 그런 다음, 비 클라이언트 영역으로 확장되는 애플리케이션의 부분을 정의하는 창에 대한 템플릿을 제공합니다. 개체에 WindowChrome 노출되는 속성은 , , CaptionHeightCornerRadiusGlassFrameThickness입니다ResizeBorderThickness.

ResizeBorderThickness 속성을 표시 하는 사용자가 클릭 끌어서 창의 크기를 조정할 수 있는 애플리케이션 창의 외부 테두리를 지정 합니다.

CaptionHeight 속성 제목 표시줄을 사용 하 여 일반적으로 연결 된 시스템 동작을 사용 하도록 설정 하는 창의 맨 위에 있는 보이지 않는 영역을 지정 합니다. 이러한 동작은 포함: 클릭 하 고 끌어 창 이동 창을 최대화 하려면 두 번 클릭 하 고 시스템 메뉴를 표시 하려면 마우스 오른쪽 단추로 클릭 합니다.

크기 조정 테두리 및 캡션 영역에는 시각적 요소가; 없는 합니다. 만 입력 하 고 표준 시스템 제공 창 동작을 사용 하도록 설정에 응답 하는 영역 정의 합니다.

CornerRadius 속성 창의 모퉁이가 둥근 정도 지정 합니다. 이 속성에 영향을 주지 없습니다 창의 투명 효과 프레임을 사용 하는 경우.

GlassFrameThickness 속성 창 주위 투명 효과 프레임의 너비를 지정 합니다. 기본적으로 사용 하 여 지정한 시스템 값을 WindowNonClientFrameThickness 표준 창의 모양을 에뮬레이션 하는 속성입니다. 투명 효과 프레임을 사용 하면 최소화, 최대화 및 닫기에 대 한 캡션 단추 표시 되 고 대화형입니다. 애플리케이션은 애플리케이션 아이콘, 캡션 텍스트를 표시 하는 일을 담당 합니다. 설정할 수 있습니다는 GlassFrameThickness 속성을 기본값 보다 넓히거나 투명 효과 프레임을 확인 합니다.

주의

캡션 단추의 크기를 변경 하지 않습니다는 GlassFrameThickness 속성이 변경 됩니다. 투명 효과 프레임의 위쪽의 높이 사용 하면 캡션 단추의 높이 보다 작으면, 캡션 단추 완전히 표시 되지 않습니다.

투명 효과 프레임이 없는 사용자 지정 창에서 설정 된 GlassFrameThickness 속성 0의 균일 한 값을 합니다. 사용 하지 않도록 설정 되 고 표준 캡션 단추를 숨깁니다.

전체 창에 맞게 투명 효과 프레임을 확장 하려면 설정의 GlassFrameThickness 한쪽에 음수 값으로 속성입니다. 경우는 GlassFrameThickness 모든 면에 대해 음수 값으로 속성을 설정 하면 해당 강제 변환 된 값 같음 됩니다 GlassFrameCompleteThickness합니다.

참고

Aero는 Windows Vista에 도입 된 Windows 데스크톱의 기능 및 시각적 모양 개선의 집합입니다. Aero의 시각적으로 잘 알려진 기능 중 하나에 투명 창 테두리입니다. Windows Aero 데스크톱 창 관리자 (DWM)의 바탕 화면 혼합 기능으로 사용 됩니다.

Windows Aero 투명 효과 모든 운영 체제에서 지원 되지 않습니다 및 지원 되는 운영 체제에서 해제할 수 있습니다. 투명 효과 프레임에 관계 없이 표시 되지 것입니다 Windows Aero를 사용할 수 없는 경우는 GlassFrameThickness 속성 값입니다. 이 속성에 의해 지정 된 테두리 영역 대신 검정색 나타납니다. 확인 된 IsGlassEnabled 속성을 통해 Windows Aero 투명 효과 사용할 수 있는지 확인 합니다. 투명 효과 사용할 수 없는 경우 투명 효과 프레임을 사용 하지 않거나 null로 창 스타일을 설정 하 여 표준 창을 사용 하는 대체 창 스타일을 제공 해야 합니다.

창 프레임에 모양과 프레임 콘텐츠 동작을 정의 하는 ControlTemplate을 지정 하 여 WPF 콘텐츠를 확장 합니다. 사용자 지정 하는 창의 형식으로 ControlTemplate의 TargetType를 설정 합니다.

<ControlTemplate TargetType="{x:Type local:MainWindow}">  

기본적으로 부분 창의 비클라이언트 영역 내에 있는 모든 시각적 요소는 대화형입니다. 비클라이언트 영역에 대화형 요소를 사용 하려면 WindowsChrome.IsHitTestVisibleInChrome 연결 된 속성 요소에 연결 하 고 true로 설정 합니다.

다음 XAML 태그 WindowChrome 클래스를 사용 하 여 창 사용자 지정 하는 데 필요한 기본 요소를 보여 줍니다.

<Style x:Key="StandardStyle" TargetType="{x:Type local:MainWindow}">  
    <Setter Property="shell:WindowChrome.WindowChrome">  
        <Setter.Value>  
            <shell:WindowChrome />  
        </Setter.Value>  
    </Setter>  
    <Setter Property="Template">  
        <Setter.Value>  
            <ControlTemplate TargetType="{x:Type local:MainWindow}">  
                <Grid>  
                    <Border Background="White"  
                            Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}">  
                        <ContentPresenter Content="{TemplateBinding Content}" />  
                    </Border>  
                    <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}"   
                               VerticalAlignment="Top" HorizontalAlignment="Left"   
                               Margin="36,8,0,0"/>  
                    <Image Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Icon}"  
                           VerticalAlignment="Top" HorizontalAlignment="Left"  
                           Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(shell:WindowChrome.WindowChrome).ResizeBorderThickness}"   
                           Width="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=SmallIconSize.Width}"  
                           shell:WindowChrome.IsHitTestVisibleInChrome="True"/>  
                </Grid>  
            </ControlTemplate>  
        </Setter.Value>  
    </Setter>  
</Style>  

첫 번째 setter는 WindowChrome 창에 연결합니다. 모든 기본값 사용 WindowChrome 속성에 대 한 표준 창 처럼 표시 창 수 있습니다.

<Setter Property="shell:WindowChrome.WindowChrome">  
    <Setter.Value>  
        <shell:WindowChrome />  
    </Setter.Value>  
</Setter>  

창 템플릿 내용을 표시 하는 애플리케이션에서 지정 된 창의 콘텐츠 프레 젠 터를 지정 해야 합니다. WindowChrome 기본적으로 클래스는 비클라이언트 테두리를 처리 하기 위해 클라이언트 영역을 확장 합니다. 투명 효과 프레임을 파악 하기 위해 ContentPresenter 주위에 여백을 지정 해야 합니다. 이 태그는 표준 창의 모양을 에뮬레이트 하려면 콘텐츠 프레 젠 터 주위에 흰색 배경을 사용 하 여 테두리를 지정 합니다. 또한 프레임에 대 한 기본 시스템 너비를 가져옵니다 WindowNonClientFrameThickness 속성에 바인딩되는 여백을 지정 합니다.

<Border Background="White"  
    Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}">  
    <ContentPresenter Content="{TemplateBinding Content}" />  
</Border>  

애플리케이션 아이콘 및 제목을; WindowChrome 클래스로 표시 되지 않습니다. 사용자 지정 콘텐츠로 테두리를 추가 해야 합니다. 다음 XAML 이미지 및 아이콘 및 제목을 표시 하는 textblock에 추가 합니다. 두 요소는 창에서 해당 속성에 바인딩됩니다. 이미지 너비는 아이콘에 대 한 기본 시스템 크기를 가져오는 SmallIconSize 너비에 바인딩되어 있습니다. 마우스 이벤트를 받을 수 있도록 이미지에 연결 된 IsHitTestVisibleInChrome 속성 설정 됩니다.

<Image Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Icon}"  
       VerticalAlignment="Top" HorizontalAlignment="Left"  
       Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(shell:WindowChrome.WindowChrome).ResizeBorderThickness}"   
       Width="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=SmallIconSize.Width}"  
       shell:WindowChrome.IsHitTestVisibleInChrome="True"/>  

<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}"   
           VerticalAlignment="Top" HorizontalAlignment="Left"   
           Margin="36,8,0,0"/>  

생성자

WindowChrome()

WindowChrome 클래스의 새 인스턴스를 초기화합니다.

필드

CaptionHeightProperty

CaptionHeight 종속성 속성을 나타냅니다.

CornerRadiusProperty

CornerRadius 종속성 속성을 나타냅니다.

GlassFrameThicknessProperty

GlassFrameThickness 종속성 속성을 나타냅니다.

IsHitTestVisibleInChromeProperty

IsHitTestVisibleInChrome 종속성 속성을 나타냅니다.

NonClientFrameEdgesProperty

NonClientFrameEdges 종속성 속성을 나타냅니다.

ResizeBorderThicknessProperty

ResizeBorderThickness 종속성 속성을 나타냅니다.

ResizeGripDirectionProperty

ResizeGripDirection 종속성 속성을 나타냅니다.

UseAeroCaptionButtonsProperty

UseAeroCaptionButtons 종속성 속성을 나타냅니다.

WindowChromeProperty

WindowChrome 종속성 속성을 나타냅니다.

속성

CanFreeze

개체를 수정 불가능으로 설정할 수 있는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 Freezable)
CaptionHeight

창 맨 위의 캡션 영역 높이를 가져오거나 설정합니다.

CornerRadius

창의 모퉁이가 둥근 정도를 표시하는 값을 가져오거나 설정합니다.

DependencyObjectType

DependencyObjectType 이 instance CLR 형식을 래핑하는 을 가져옵니다.

(다음에서 상속됨 DependencyObject)
Dispatcher

Dispatcher와 연결된 DispatcherObject를 가져옵니다.

(다음에서 상속됨 DispatcherObject)
GlassFrameCompleteThickness

-1의 균일 한 두께를 가져옵니다.

GlassFrameThickness

세로 창 테두리의 너비를 픽셀 단위로 나타내는 값을 가져옵니다.

IsFrozen

개체가 현재 수정 가능한지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 Freezable)
IsSealed

이 인스턴스가 현재 봉인되어 있는지(읽기 전용인지) 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 DependencyObject)
NonClientFrameEdges

클라이언트가 소유하고 있지 않은 창 프레임의 가장자리를 나타내는 값을 가져오거나 설정합니다.

ResizeBorderThickness

창의 크기를 조정하는 데 사용되는 테두리의 너비를 픽셀 단위로 나타내는 값을 가져오거나 설정합니다.

UseAeroCaptionButtons

Windows Aero 캡션 단추에 대해 적중 테스트를 활성화하는지 여부를 나타내는 값을 가져오거나 설정합니다.

연결된 속성

IsHitTestVisibleInChrome

창의 비클라이언트 영역에 대한 사용자 지정을 설명하는 개체를 나타냅니다.

ResizeGripDirection

창의 비클라이언트 영역에 대한 사용자 지정을 설명하는 개체를 나타냅니다.

WindowChrome

창에 연결된 WindowChrome 인스턴스를 가져오거나 설정합니다.

메서드

CheckAccess()

호출 스레드가 이 DispatcherObject에 액세스할 수 있는지 여부를 확인합니다.

(다음에서 상속됨 DispatcherObject)
ClearValue(DependencyProperty)

속성의 로컬 값을 지웁니다. 지울 속성이 DependencyProperty 식별자에서 지정됩니다.

(다음에서 상속됨 DependencyObject)
ClearValue(DependencyPropertyKey)

읽기 전용 속성의 로컬 값을 지웁니다. 선언할 속성이 DependencyPropertyKey에서 지정됩니다.

(다음에서 상속됨 DependencyObject)
Clone()

개체 값의 전체 복사본을 만들어 Freezable의 수정 가능한 복제본을 만듭니다. 개체의 종속성 속성을 복사하는 경우 이 메서드는 더 이상 확인되지 않을 수도 있는 식을 복사하지만 애니메이션 또는 해당 현재 값은 복사하지 않습니다.

(다음에서 상속됨 Freezable)
CloneCore(Freezable)

기본(애니메이션이 적용되지 않은) 속성 값을 사용하여 인스턴스를 지정된 Freezable의 복제본(전체 복사본)으로 만듭니다.

(다음에서 상속됨 Freezable)
CloneCurrentValue()

현재 값을 사용하여 Freezable의 수정 가능한 복제본(전체 복사본)을 만듭니다.

(다음에서 상속됨 Freezable)
CloneCurrentValueCore(Freezable)

현재 속성 값을 사용하여 이 인스턴스를 지정된 Freezable의 수정 가능한 클론(전체 복사본)으로 만듭니다.

(다음에서 상속됨 Freezable)
CoerceValue(DependencyProperty)

지정된 종속성 속성의 값을 강제 변환합니다. 호출하는 DependencyObject에 있으므로 이 작업은 종속성 속성의 속성 메타데이터에 지정된 CoerceValueCallback 함수를 호출하여 수행합니다.

(다음에서 상속됨 DependencyObject)
CreateInstance()

Freezable 클래스의 새 인스턴스를 초기화합니다.

(다음에서 상속됨 Freezable)
CreateInstanceCore()

WindowChrome 클래스의 새 인스턴스를 만듭니다.

Equals(Object)

제공된 DependencyObject가 현재 DependencyObject에 해당하는지 여부를 확인합니다.

(다음에서 상속됨 DependencyObject)
Freeze()

현재 개체를 수정할 수 없게 설정하고 해당 IsFrozen 속성을 true로 설정합니다.

(다음에서 상속됨 Freezable)
FreezeCore(Boolean)

Freezable을 수정할 수 없게 만들거나, 수정할 수 없게 만들 수 있는지 테스트합니다.

(다음에서 상속됨 Freezable)
GetAsFrozen()

애니메이션이 적용되지 않은 기준 속성 값을 사용하여 Freezable의 고정된 복사본을 만듭니다. 복사본이 고정되므로 고정된 하위 개체는 모두 참조를 통해 복사됩니다.

(다음에서 상속됨 Freezable)
GetAsFrozenCore(Freezable)

기본(애니메이션이 적용되지 않은) 속성 값을 사용하여 인스턴스를 지정된 Freezable의 고정된 복제본으로 만듭니다.

(다음에서 상속됨 Freezable)
GetCurrentValueAsFrozen()

현재 속성 값을 사용하여 Freezable의 고정된 복사본을 만듭니다. 복사본이 고정되므로 고정된 하위 개체는 모두 참조를 통해 복사됩니다.

(다음에서 상속됨 Freezable)
GetCurrentValueAsFrozenCore(Freezable)

현재 인스턴스를 지정된 Freezable의 고정 클론으로 만듭니다. 개체에 애니메이션 효과를 준 종속성 속성이 있는 경우 애니메이션 효과를 준 현재 값이 복사됩니다.

(다음에서 상속됨 Freezable)
GetHashCode()

DependencyObject의 해시 코드를 가져옵니다.

(다음에서 상속됨 DependencyObject)
GetIsHitTestVisibleInChrome(IInputElement)

지정된 입력 요소의 IsHitTestVisibleInChrome 연결된 속성 값을 가져옵니다.

GetLocalValueEnumerator()

DependencyObject에 대해 로컬로 값을 설정한 종속성 속성을 확인하기 위한 특수 열거자를 만듭니다.

(다음에서 상속됨 DependencyObject)
GetResizeGripDirection(IInputElement)

지정된 입력 요소의 ResizeGripDirection 연결된 속성 값을 가져옵니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
GetValue(DependencyProperty)

DependencyObject의 인스턴스에서 종속성 속성의 현재 유효 값을 반환합니다.

(다음에서 상속됨 DependencyObject)
GetWindowChrome(Window)

지정된 WindowChrome에서 Window 연결된 속성 값을 가져옵니다.

InvalidateProperty(DependencyProperty)

지정된 종속성 속성의 유효 값을 다시 계산합니다.

(다음에서 상속됨 DependencyObject)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
OnChanged()

현재 Freezable 개체가 수정될 때 호출됩니다.

(다음에서 상속됨 Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

방금 설정된 DependencyObjectType 데이터 멤버에 대한 적절한 컨텍스트 포인터를 설정합니다.

(다음에서 상속됨 Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

이 멤버는 WPF(Windows Presentation Foundation) 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

(다음에서 상속됨 Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

OnPropertyChanged(DependencyPropertyChangedEventArgs)DependencyObject 구현을 재정의하여 Freezable 형식의 변화하는 종속성 속성에 대한 응답으로 Changed 처리기도 호출합니다.

(다음에서 상속됨 Freezable)
ReadLocalValue(DependencyProperty)

종속성 속성의 로컬 값을 반환합니다(있는 경우).

(다음에서 상속됨 DependencyObject)
ReadPreamble()

유효한 스레드에서 Freezable에 액세스하고 있는지 확인합니다. Freezable 상속자는 종속성 속성이 아닌 데이터 멤버를 읽는 API의 시작 부분에서 이 메서드를 호출해야 합니다.

(다음에서 상속됨 Freezable)
SetCurrentValue(DependencyProperty, Object)

해당 값 소스를 변경하지 않고 종속성 속성의 값을 설정합니다.

(다음에서 상속됨 DependencyObject)
SetIsHitTestVisibleInChrome(IInputElement, Boolean)

지정된 입력 요소에 IsHitTestVisibleInChrome 연결된 속성 값을 설정합니다.

SetResizeGripDirection(IInputElement, ResizeGripDirection)

지정된 입력 요소에 ResizeGripDirection 연결된 속성 값을 설정합니다.

SetValue(DependencyProperty, Object)

지정된 종속성 속성 식별자를 가진 종속성 속성의 로컬 값을 설정합니다.

(다음에서 상속됨 DependencyObject)
SetValue(DependencyPropertyKey, Object)

종속성 속성의 DependencyPropertyKey 식별자에 의해 지정된 읽기 전용 종속성 속성의 로컬 값을 설정합니다.

(다음에서 상속됨 DependencyObject)
SetWindowChrome(Window, WindowChrome)

지정된 WindowChromeWindow 연결 속성 값을 설정합니다.

ShouldSerializeProperty(DependencyProperty)

serialization 프로세스에서 지정된 종속성 속성의 값을 직렬화해야 하는지 여부를 나타내는 값을 반환합니다.

(다음에서 상속됨 DependencyObject)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
VerifyAccess()

호출 스레드에서 이 DispatcherObject에 액세스할 수 있는지 확인합니다.

(다음에서 상속됨 DispatcherObject)
WritePostscript()

Changed 에 대한 Freezable 이벤트를 발생시키고 해당 OnChanged() 메서드를 호출합니다. Freezable에서 파생된 클래스는 종속성 속성으로 저장되지 않은 클래스 멤버를 수정하는 모든 API의 끝에서 이 메서드를 호출해야 합니다.

(다음에서 상속됨 Freezable)
WritePreamble()

Freezable이 고정되어 있지 않고 유효한 스레드 컨텍스트에서 액세스되고 있는지 확인합니다. Freezable 상속자는 종속성 속성이 아닌 데이터 멤버에 쓰는 API의 시작 부분에서 이 메서드를 호출해야 합니다.

(다음에서 상속됨 Freezable)

이벤트

Changed

Freezable 또는 여기에 들어 있는 개체가 수정될 때 발생합니다.

(다음에서 상속됨 Freezable)

적용 대상