DesignModeValueProvider 클래스

업데이트: 2007년 11월

디자이너에서 사용자가 수행한 속성 변경을 캡처하고 디자인 타임에 새 값을 제공합니다.

네임스페이스:  Microsoft.Windows.Design.Model
어셈블리:  Microsoft.Windows.Design.Extensibility(Microsoft.Windows.Design.Extensibility.dll)

구문

Public Class DesignModeValueProvider _
    Inherits FeatureProvider

Dim instance As DesignModeValueProvider
public class DesignModeValueProvider : FeatureProvider
public ref class DesignModeValueProvider : public FeatureProvider
public class DesignModeValueProvider extends FeatureProvider

설명

일반적으로 사용자가 디자이너에서 개체의 속성 값을 변경할 경우 해당 값은 디자이너에서 개체에 설정됩니다. DesignModeValueProvider 클래스를 사용하여 고유의 논리를 이 프로세스에 삽입할 수 있습니다. 예를 들어 사용자가 컨트롤의 visible 속성을 false로 설정할 수 있게 할 수 있지만 컨트롤은 디자인 타임에 여전히 볼 수 있어야 합니다.

그러기 위해서는 DesignModeValueProvider를 만들고 사용자 지정 컨트롤에 연결합니다. DesignModeValueProvider는 사용자가 속성에서 변경한 내용을 캡처합니다. 그리고 TranslatePropertyValue 메서드에 고유의 논리를 삽입하면 DesignModeValueProvider가 새 값을 디자이너에 전달합니다.

중요:

이 방법을 사용하면 디자이너의 속성 동작이 XAML 뷰의 속성 값과 일치하지 않습니다. XAML 뷰에서는 사용자가 디자인 타임에 입력한 값을 표시합니다. XAML 뷰의 값은 런타임에 속성이 보일 동작을 나타냅니다.

예제

다음 예제에서는 사용자 지정 단추 컨트롤에 연결될 사용자 지정 DesignModeValueProvider를 만듭니다. TranslatePropertyValue 메서드에서 ButtonContent 속성을 변경하여 디자이너에서 대문자로 나타나도록 합니다. 또한 ButtonBackground 속성을 변경하여 디자이너에서 기본 시스템 색으로 나타나도록 합니다. 이러한 변경은 디자이너에만 적용됩니다. 런타임에 ContentBackground 속성은 사용자가 설정한 값과 함께 나타납니다.

자세한 내용은 연습: 디자인 타임에 속성 동작 변경을 참조하십시오.


Imports System
Imports System.Windows                  'SystemColors
Imports System.Windows.Media            'SolidColorBrush
Imports System.Windows.Controls         'Button
Imports Microsoft.Windows.Design.Model  'DesignModeValueProvider

Namespace CustomButton

    Public Class CustomButtonDesignModeValueProvider
        Inherits DesignModeValueProvider


        Public Sub New()

            Properties.Add(Button.ContentProperty)
            Properties.Add(Button.BackgroundProperty)
        End Sub



        Public Overrides Function TranslatePropertyValue(ByVal identifier As PropertyIdentifier, ByVal value As Object) As Object

            If identifier.DependencyProperty Is Button.ContentProperty Then

                Return value.ToString().ToUpper()
            End If

            If identifier.DependencyProperty Is Button.BackgroundProperty Then

                Return New SolidColorBrush(SystemColors.ControlColor)
            End If

            Return MyBase.TranslatePropertyValue(identifier, value)
        End Function
    End Class
End Namespace

using System;
using System.Windows;                   //SystemColors
using System.Windows.Media;             //SolidColorBrush
using System.Windows.Controls;          //Button
using Microsoft.Windows.Design.Model;   //DesignModeValueProvider
namespace CustomButton
{
    class CustomButtonDesignModeValueProvider : DesignModeValueProvider
    {

        public CustomButtonDesignModeValueProvider()
        {
            Properties.Add(Button.ContentProperty);
            Properties.Add(Button.BackgroundProperty);
        }


        public override object TranslatePropertyValue(PropertyIdentifier identifier, object value)
        {
            if (identifier.DependencyProperty == Button.ContentProperty)
            {
                return ((string)value).ToUpper();
            }

            if (identifier.DependencyProperty == Button.BackgroundProperty)
            {
                return new SolidColorBrush(SystemColors.ControlColor);
            }

            return base.TranslatePropertyValue(identifier, value);
        }
    }
}

상속 계층 구조

System.Object
  Microsoft.Windows.Design.Features.FeatureProvider
    Microsoft.Windows.Design.Model.DesignModeValueProvider

스레드로부터의 안전성

이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

참고 항목

참조

DesignModeValueProvider 멤버

Microsoft.Windows.Design.Model 네임스페이스

기타 리소스

방법: 디자인 타임에 속성 동작 변경

WPF Designer 확장성 아키텍처

속성 편집 아키텍처

기능 공급자 및 기능 커넥터