Share via


Setter 클래스

정의

Style 또는 VisualState의 속성에 값을 적용합니다.

public ref class Setter sealed : SetterBase
/// [Windows.Foundation.Metadata.Activatable(Windows.UI.Xaml.ISetterFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [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 Setter final : SetterBase
/// [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(Windows.UI.Xaml.ISetterFactory, 65536, "Windows.Foundation.UniversalApiContract")]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class Setter final : SetterBase
[Windows.Foundation.Metadata.Activatable(typeof(Windows.UI.Xaml.ISetterFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[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 Setter : SetterBase
[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(typeof(Windows.UI.Xaml.ISetterFactory), 65536, "Windows.Foundation.UniversalApiContract")]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class Setter : SetterBase
Public NotInheritable Class Setter
Inherits SetterBase
<Setter .../>
상속
Object Platform::Object IInspectable DependencyObject SetterBase Setter
특성

Windows 요구 사항

디바이스 패밀리
Windows 10 (10.0.10240.0에서 도입되었습니다.)
API contract
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)

예제

이 예제에서는 TextBlock 요소의 스타일에서 Setter 문을 사용하는 방법을 보여 줍니다.

<StackPanel>
    <StackPanel.Resources>
        <!-- Create a Style for a TextBlock to specify that the
             Foreground equals Navy, FontSize equals 14, and
             VerticalAlignment equals Bottom. -->
        <Style TargetType="TextBlock" x:Key="TextBlockStyle">
            <Setter Property="Foreground" Value="Navy"/>
            <Setter Property="FontSize" Value="14"/>
            <Setter Property="VerticalAlignment" Value="Bottom"/>
        </Style>
    </StackPanel.Resources>

    <!-- Apply the TextBlockStyle to 2 different TextBlocks. -->
    <TextBlock Style="{StaticResource TextBlockStyle}" Text="Hello"/>
    <TextBlock Style="{StaticResource TextBlockStyle}" Text="World"/>
</StackPanel>

이 예제에서는 VisualState.Setters 속성 내에서 여러 Setter 문을 사용하여 VisualState 가 적용될 때 다양한 요소(애니메이션 없이)에 불연속 속성 값 변경 내용을 적용하는 방법을 보여 줍니다.

<Page>
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup>
                <VisualState x:Name="NarrowState">
                    <VisualState.Setters>
                        <Setter Target="myPanel.Orientation" Value="Vertical"/>
                        <Setter Target="myPanel.Width" Value="380"/>
                        <Setter Target="myTextBlock.MaxLines" Value="3"/>
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>

        <StackPanel x:Name="myPanel" Orientation="Horizontal">
            <TextBlock x:Name="myTextBlock" MaxLines="5" Style="{ThemeResource BodyTextBlockStyle}"/>
        </StackPanel>
    </Grid>
</Page>

AttachedPropertyProvider에서 연결된 속성 이름을 지정하여 연결된 속성 값에 setter를 적용할 수도 있습니다. PropertyName 양식입니다. 예를 들어 연결된 속성 Canvas.LeftSetter를 사용하려면 이 XAML을 사용합니다.

<Setter Property="Canvas.Left" Value="100"/>

를 사용하여 Target연결된 속성의 값을 업데이트하려면 연결된 속성 경로를 괄호 안에 배치합니다. 이 예제에서는 'TitleTextBlock' 이름으로 요소의 값을 업데이트 RelativePanel.AlignRightWithPanel 하는 방법을 보여줍니다.

<RelativePanel>
    <TextBlock x:Name="TitleTextBlock" Text="Title"/>
</RelativePanel>

...

<Setter Target="TitleTextBlock.(RelativePanel.AlignRightWithPanel)" Value="True"/>

설명

Setter 문을 사용하여 Style 또는 VisualState 내에서 속성 값을 설정합니다.

Setter.Target 속성은 Style 또는 VisualState에서 사용할 수 있지만 다른 방식으로 사용할 수 있습니다. Style에서 사용할 경우 수정해야 하는 속성을 직접 지정할 수 있습니다. VisualState에서 사용할 경우 Target 속성에 TargetPropertyPath(대상 요소와 속성이 명시적으로 지정된 점선 구문)가 지정되어야 합니다.

Setter.Property 속성은 VisualState가 아닌 Style에서만 사용할 수 있습니다. Windows 10 시작하여 Setter.Property 대신 모든 곳에서 Setter.Target을 사용할 수 있습니다.

Setter에서 ValueTarget 또는 Property를 모두 지정해야 합니다. 그렇지 않으면 예외가 throw됩니다(Setter가 XAML에서 만들어지거나 코드에서 수정되었는지 여부에 따라 구문 분석 예외 또는 런타임 오류).

코드를 사용하여 Setter instance 액세스하는 경우 부모 StyleIsSealed 속성 값이 true이면 Setter instance 속성의 값을 변경할 수 없습니다. 개별 Setter의 IsSealed 속성에서도 보고됩니다. 시스템은 런타임이 UI 요소에 스타일을 적용하고 UI에 표시할 때 이러한 속성을 true 로 설정합니다. 봉인된 Setter를 변경하려고 시도하면 런타임 오류가 발생합니다.

마이그레이션 정보

  • WPF(Windows Presentation Foundation) 및 Microsoft Silverlight는 Binding 식을 사용하여 Style에서 Setter에 대한 값을 제공하는 기능을 지원했습니다. Windows 런타임 Setter.Value에 대한 바인딩 사용을 지원하지 않습니다(바인딩은 평가되지 않고 Setter는 영향을 주지 않으며 오류가 발생하지 않지만 원하는 결과도 얻지 못합니다). XAML 스타일을 Windows Presentation Foundation(WPF) 또는 Microsoft Silverlight XAML에서 변환하는 경우 바인딩 식 사용량을 값을 설정하는 문자열 또는 개체로 바꾸거나 값을 Binding에서 얻은 값이 아닌 공유 {StaticResource} 태그 확장 값으로 리팩터링합니다.

생성자

Setter()

초기 속성 또는 값이 없는 Setter 클래스의 새 instance 초기화합니다.

Setter(DependencyProperty, Object)

초기 속성 정보를 사용하여 Setter 클래스의 새 instance 초기화합니다.

속성

Dispatcher

이 개체가 연결된 CoreDispatcher 를 가져옵니다. CoreDispatcher는 코드가 비 UI 스레드에서 시작되더라도 UI 스레드에서 DependencyObject에 액세스할 수 있는 기능을 나타냅니다.

(다음에서 상속됨 DependencyObject)
IsSealed

이 개체가 변경 불가능한 상태인지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 SetterBase)
Property

Value를 적용할 속성을 가져오거나 설정합니다.

Target

Value를 적용할 대상 요소의 속성 경로를 가져오거나 설정합니다.

Value

Setter에서 지정한 속성에 적용할 값을 가져오거나 설정합니다.

메서드

ClearValue(DependencyProperty)

종속성 속성의 로컬 값을 지웁니다.

(다음에서 상속됨 DependencyObject)
GetAnimationBaseValue(DependencyProperty)

애니메이션이 활성화되지 않은 경우에 적용되는 종속성 속성에 대해 설정된 기본 값을 반환합니다.

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

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

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

로컬 값이 설정된 경우 종속성 속성의 로컬 값을 반환합니다.

(다음에서 상속됨 DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

DependencyObject instance 특정 DependencyProperty에 대한 변경 내용을 수신 대기하기 위한 알림 함수를 등록합니다.

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

DependencyObject에 대한 종속성 속성의 로컬 값을 설정합니다.

(다음에서 상속됨 DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

RegisterPropertyChangedCallback을 호출하여 이전에 등록된 변경 알림을 취소합니다.

(다음에서 상속됨 DependencyObject)

적용 대상

추가 정보