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


Setter Класс

Определение

Применяет значение к свойству в Style или VisualState.

public ref class Setter sealed : SetterBase
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.Activatable(Microsoft.UI.Xaml.ISetterFactory, 65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 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.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.Activatable(typeof(Microsoft.UI.Xaml.ISetterFactory), 65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class Setter : SetterBase
Public NotInheritable Class Setter
Inherits SetterBase
<Setter .../>
Наследование
Object Platform::Object IInspectable DependencyObject SetterBase Setter
Атрибуты

Примеры

В этом примере показано, как использовать 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 . Например, чтобы использовать метод setter для присоединенного свойства 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 можно использовать только в Стиле, а не в VisualState. Начиная с Windows 10, вместо можно использовать Setter.TargetSetter.Propertyвезде.

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

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

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

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

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

Setter()

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

Setter(DependencyProperty, Object)

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

Свойства

Dispatcher

Всегда возвращается null в приложении Windows App SDK. Вместо этого используйте DispatcherQueue .

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

Возвращает объект , DispatcherQueue с которым связан данный объект. DispatcherQueue представляет объект, который может получить доступ к потоку 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)

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

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