Поделиться через


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)

Примеры

В этом примере показано, как использовать операторы Setter в стиле для элементов TextBlock .

<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>

В этом примере показано, как использовать несколько операторов Setter внутри свойства VisualState.Setters для применения дискретных изменений значений свойств к различным элементам (без анимаций) при применении 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. Форма PropertyName . Например, чтобы использовать метод задания для присоединенного свойства Canvas.Left, используйте этот КОД XAML.

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

Чтобы обновить значение присоединенного свойства с помощью Target, поместите путь к присоединенному свойству внутри круглых скобок. В этом примере показано, как обновить RelativePanel.AlignRightWithPanel значение элемента с именем TitleTextBlock.

<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 можно использовать только в Style , а не в VisualState. Начиная с Windows 10, вместо Setter.Property можно использовать Setter.Target везде.

Необходимо указать значение, а также целевой объект или свойство в методе задания. В противном случае возникает исключение (исключение синтаксического анализа или ошибка среды выполнения в зависимости от того, создается ли метод задания в XAML или изменен в коде).

При доступе к экземпляру Setter с помощью кода нельзя изменить значение какого-либо свойства экземпляра Setter, если свойство IsSealed родительского стиля имеет значение true. Это также сообщается свойством IsSealed в отдельном методе задания. Система устанавливает для этих свойств значение true , когда среда выполнения применяет стили к элементам пользовательского интерфейса и отображает их в пользовательском интерфейсе. Попытка изменить запечатанный метод задания вызывает ошибку среды выполнения.

Примечания о переходе

  • Windows Presentation Foundation (WPF) и Microsoft Silverlight поддерживают возможность использования выражения привязки для предоставления значения для метода задания в стиле. Среда выполнения Windows не поддерживает использование привязки для Setter.Value (привязка не будет оцениваться, а метод задания не оказывает никакого влияния, вы не получите ошибок, но вы также не получите нужный результат). При преобразовании стилей XAML из Windows Presentation Foundation (WPF) или Microsoft Silverlight XAML замените все выражения привязки строками или объектами, которые задают значения, или рефакторинг значений как общие значения расширения разметки {StaticResource}, а не значения, полученные привязкой.

Конструкторы

Setter()

Инициализирует новый экземпляр класса Setter без начального свойства или значения.

Setter(DependencyProperty, Object)

Инициализирует новый экземпляр класса Setter с начальными сведениями о свойстве и значении .

Свойства

Dispatcher

Возвращает объект CoreDispatcher , с которым связан этот объект. CoreDispatcher представляет собой средство, которое может получить доступ к DependencyObject в потоке пользовательского интерфейса, даже если код инициируется потоком, не относящегося к пользовательскому интерфейсу.

(Унаследовано от DependencyObject)
IsSealed

Получает значение, указывающее, находится ли данный объект в неизменяемом состоянии.

(Унаследовано от SetterBase)
Property

Возвращает или задает свойство, к котором применяется значение .

Target

Возвращает или задает путь к свойству целевого элемента, к которому применяется значение .

Value

Возвращает или задает значение, применяемое к свойству, заданному методом задания.

Методы

ClearValue(DependencyProperty)

Очищает локальное значение свойства зависимостей.

(Унаследовано от DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Возвращает любое базовое значение, установленное для свойства зависимостей, которое применяется в случаях, когда анимация не активна.

(Унаследовано от DependencyObject)
GetValue(DependencyProperty)

Возвращает текущее действующее значение свойства зависимостей из DependencyObject.

(Унаследовано от DependencyObject)
ReadLocalValue(DependencyProperty)

Возвращает локальное значение свойства зависимостей, если задано локальное значение.

(Унаследовано от DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Регистрирует функцию уведомления для прослушивания изменений определенного DependencyProperty в этом экземпляре DependencyObject .

(Унаследовано от DependencyObject)
SetValue(DependencyProperty, Object)

Задает локальное значение свойства зависимостей для Объекта DependencyObject.

(Унаследовано от DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Отменяет уведомление об изменениях, которое было ранее зарегистрировано путем вызова Метода RegisterPropertyChangedCallback.

(Унаследовано от DependencyObject)

Применяется к

См. также раздел