Bagikan melalui


Setter Kelas

Definisi

Menerapkan nilai ke properti dalam Gaya atau 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 .../>
Warisan
Object Platform::Object IInspectable DependencyObject SetterBase Setter
Atribut

Contoh

Contoh ini memperlihatkan cara menggunakan Setter pernyataan dalam gaya untuk elemen 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>

Contoh ini memperlihatkan cara menggunakan beberapa Setter pernyataan di dalam properti VisualState.Setters untuk menerapkan perubahan nilai properti diskrit pada berbagai elemen (tanpa animasi) saat VisualState diterapkan.

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

Anda juga dapat menerapkan setter ke nilai properti terlampir, dengan menentukan nama properti terlampir di AttachedPropertyProvider. Formulir PropertyName . Misalnya, untuk menggunakan Setter untuk properti terlampir Canvas.Left, gunakan XAML ini.

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

Untuk memperbarui nilai properti terlampir menggunakan Target, tempatkan jalur properti terlampir di dalam tanda kurung. Contoh ini menunjukkan cara memperbarui RelativePanel.AlignRightWithPanel nilai pada elemen dengan nama 'TitleTextBlock'.

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

...

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

Keterangan

Gunakan Setter pernyataan untuk mengatur nilai properti dalam Gaya atau VisualState.

Properti Setter.Target dapat digunakan dalam Gaya atau VisualState, tetapi dengan cara yang berbeda. Ketika digunakan dalam Style, properti yang perlu dimodifikasi dapat ditentukan secara langsung. Ketika digunakan dalam VisualState, Target properti harus diberikan TargetPropertyPath (sintaks bertitik dengan elemen target dan properti yang ditentukan secara eksplisit).

Properti Setter.Property hanya dapat digunakan dalam Gaya dan bukan di VisualState. Mulai dari Windows 10, Anda dapat menggunakan Setter.Target di mana saja alih-alih Setter.Property.

Anda harus menentukan Nilai, dan Target atau Properti, pada Setter. Jika tidak, pengecualian dilemparkan (baik pengecualian penguraian atau kesalahan runtime, tergantung pada apakah Setter dibuat di XAML atau dimodifikasi dalam kode).

Jika Anda mengakses Setter instans menggunakan kode, Anda tidak dapat mengubah nilai properti Setter instans apa pun jika nilai properti IsSealed pada Gaya induk adalah true. Ini juga dilaporkan oleh properti IsSealed pada individu Setter. Sistem mengatur properti ini ke true ketika runtime menerapkan gaya ke elemen UI dan menampilkannya di UI. Mencoba mengubah yang disegel Setter melemparkan kesalahan runtime.

Catatan migrasi

  • Windows Presentation Foundation (WPF) dan Microsoft Silverlight mendukung kemampuan untuk menggunakan ekspresi Pengikatan untuk menyediakan Nilai untuk Setter dalam Gaya. Windows Runtime tidak mendukung Binding penggunaan untuk Setter.Value ( Binding tidak akan mengevaluasi dan Setter tidak berpengaruh, Anda tidak akan mendapatkan kesalahan, tetapi Anda juga tidak akan mendapatkan hasil yang diinginkan). Saat Anda mengonversi gaya XAML dari WPF atau Microsoft Silverlight XAML, ganti penggunaan ekspresi apa pun Binding dengan string atau objek yang mengatur nilai, atau refaktor nilai sebagai nilai ekstensi markup {StaticResource} bersama daripada Bindingnilai yang diperoleh.

Konstruktor

Setter()

Menginisialisasi instans baru kelas Setter tanpa Properti atau Nilai awal.

Setter(DependencyProperty, Object)

Menginisialisasi instans baru kelas Setter dengan informasi Properti dan Nilai awal.

Properti

Dispatcher

Selalu kembali null di aplikasi SDK Aplikasi Windows. Gunakan DispatcherQueue sebagai gantinya .

(Diperoleh dari DependencyObject)
DispatcherQueue

DispatcherQueue Mendapatkan yang dikaitkan dengan objek ini. DispatcherQueue mewakili fasilitas yang dapat mengakses DependencyObject pada utas UI bahkan jika kode dimulai oleh utas non-UI.

(Diperoleh dari DependencyObject)
IsSealed

Mendapatkan nilai yang menunjukkan apakah objek ini dalam status tidak dapat diubah.

(Diperoleh dari SetterBase)
Property

Mendapatkan atau mengatur properti untuk menerapkan Nilai .

Target

Mendapatkan atau mengatur jalur properti pada elemen target untuk menerapkan Nilai .

Value

Mendapatkan atau mengatur nilai yang akan diterapkan ke properti yang ditentukan oleh Setter.

Metode

ClearValue(DependencyProperty)

Menghapus nilai lokal properti dependensi.

(Diperoleh dari DependencyObject)
GetAnimationBaseValue(DependencyProperty)

Mengembalikan nilai dasar apa pun yang ditetapkan untuk properti dependensi, yang akan berlaku dalam kasus di mana animasi tidak aktif.

(Diperoleh dari DependencyObject)
GetValue(DependencyProperty)

Mengembalikan nilai efektif properti dependensi saat ini dari DependencyObject.

(Diperoleh dari DependencyObject)
ReadLocalValue(DependencyProperty)

Mengembalikan nilai lokal properti dependensi, jika nilai lokal ditetapkan.

(Diperoleh dari DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Mendaftarkan fungsi pemberitahuan untuk mendengarkan perubahan pada DependencyProperty tertentu pada instans DependencyObject ini.

(Diperoleh dari DependencyObject)
SetValue(DependencyProperty, Object)

Mengatur nilai lokal properti dependensi pada DependencyObject.

(Diperoleh dari DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Membatalkan pemberitahuan perubahan yang sebelumnya terdaftar dengan memanggil RegisterPropertyChangedCallback.

(Diperoleh dari DependencyObject)

Berlaku untuk

Lihat juga