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 .../>
- Наследование
- Атрибуты
Примеры
В этом примере показано, как использовать 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 |
Всегда возвращается |
DispatcherQueue |
Возвращает объект , |
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) |