Setter 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將值套用至 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 .../>
- 繼承
- 屬性
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.Left使用Setter,請使用這個 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 屬性只能在Style中使用,而不能用於VisualState。 從 Windows 10 開始,您可以在任何地方使用Setter.Target,而不是Setter.Property。
您必須在 Setter 上同時指定 Value和 Target 或 Property。 否則,會擲回例外狀況 (剖析例外狀況或執行時間錯誤,視 Setter 是在 XAML 中建立或修改程式碼) 而定。
如果您使用程式碼存取 Setter 實例,如果父Style上的IsSealed屬性值為 true,就無法變更 Setter 實例的任何屬性值。 這也會由個別 Setter 上的 IsSealed 屬性報告。 當執行時間將樣式套用至 UI 元素並在 UI 中顯示樣式時,系統會將這些屬性設定為 true 。 嘗試變更密封的 Setter 會擲回執行階段錯誤。
移轉注意事項
- Windows Presentation Foundation (WPF) 和 Microsoft Silverlight 支援使用Binding 運算式在Style中提供 Setter的值。 Windows 執行階段不支援Setter.Value的系結使用方式, (系結將不會評估,而且 Setter 沒有作用,您不會收到錯誤,但不會取得所需的結果) 。 當您從 WINDOWS PRESENTATION FOUNDATION (WPF) 或 Microsoft Silverlight XAML 轉換 XAML 樣式時,請將任何 Binding運算式使用方式取代為設定值的字串或物件,或將值重構為共用{StaticResource} 標記延伸值,而不是系結取得的值。
建構函式
Setter() | |
Setter(DependencyProperty, Object) |
屬性
Dispatcher |
取得與此物件相關聯的 CoreDispatcher 。 CoreDispatcher代表可以存取 UI 執行緒上DependencyObject的功能,即使程式碼是由非 UI 執行緒起始也一樣。 (繼承來源 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實例上特定DependencyProperty的變更。 (繼承來源 DependencyObject) |
SetValue(DependencyProperty, Object) |
在 DependencyObject上設定相依性屬性的本機值。 (繼承來源 DependencyObject) |
UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
取消先前透過呼叫 RegisterPropertyChangedCallback註冊的變更通知。 (繼承來源 DependencyObject) |