Bagikan melalui


RelativeSource Kelas

Definisi

Menerapkan ekstensi markup yang menjelaskan lokasi sumber pengikatan relatif terhadap posisi target pengikatan.

public ref class RelativeSource : System::Windows::Markup::MarkupExtension, System::ComponentModel::ISupportInitialize
[System.Windows.Markup.MarkupExtensionReturnType(typeof(System.Windows.Data.RelativeSource))]
public class RelativeSource : System.Windows.Markup.MarkupExtension, System.ComponentModel.ISupportInitialize
[<System.Windows.Markup.MarkupExtensionReturnType(typeof(System.Windows.Data.RelativeSource))>]
type RelativeSource = class
    inherit MarkupExtension
    interface ISupportInitialize
Public Class RelativeSource
Inherits MarkupExtension
Implements ISupportInitialize
Warisan
RelativeSource
Atribut
Penerapan

Contoh

Contoh berikut menunjukkan pemicu gaya yang membuat yang ToolTip melaporkan pesan kesalahan validasi. RelativeSource Menggunakan properti , nilai setter mengikat ke konten kesalahan saat ini TextBox (TextBoxmenggunakan gaya ). Untuk informasi selengkapnya tentang contoh ini, lihat Cara: Menerapkan Validasi Pengikatan.

<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}">
  <Style.Triggers>
    <Trigger Property="Validation.HasError" Value="true">
      <Setter Property="ToolTip"
        Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                        Path=(Validation.Errors)/ErrorContent}"/>
    </Trigger>
  </Style.Triggers>
</Style>

Contoh berikut menunjukkan Style definisi kontrol kustom yang disebut NumericUpDown. Properti Text terikat TextBlock ke Value objek yang merupakan TemplatedParent, yang merupakan NumericUpDown kontrol tempat ini Style diterapkan dalam kasus ini.

<!--ControlTemplate for NumericUpDown that inherits from
    Control.-->
<Style TargetType="{x:Type local:NumericUpDown}">
  <Setter Property="HorizontalAlignment" Value="Center"/>
  <Setter Property="VerticalAlignment" Value="Center"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type local:NumericUpDown}">
        <Grid Margin="3">
          <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
          </Grid.RowDefinitions>
          <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
          </Grid.ColumnDefinitions>

          <Border BorderThickness="1" BorderBrush="Gray" 
                  Margin="2" Grid.RowSpan="2" 
                  VerticalAlignment="Center" HorizontalAlignment="Stretch">
                  
            <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value}" 
                       Width="60" TextAlignment="Right" Padding="5"/>
          </Border>
          
          <RepeatButton Command="{x:Static local:NumericUpDown.IncreaseCommand}"  
                        Grid.Column="1" Grid.Row="0">Up</RepeatButton>
                        
          <RepeatButton Command="{x:Static local:NumericUpDown.DecreaseCommand}"
                        Grid.Column="1" Grid.Row="1">Down</RepeatButton>

        </Grid>

      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

Berikut ini mengembalikan yang kedua ItemsControl ditemui pada jalur ke atas yang dimulai dari elemen target pengikatan.

Binding myBinding = new Binding();
// Returns the second ItemsControl encountered on the upward path
// starting at the target element of the binding
myBinding.RelativeSource = new RelativeSource(
    RelativeSourceMode.FindAncestor, typeof(ItemsControl), 2);
Dim myBinding As New Binding()
' Returns the second ItemsControl encountered on the upward path
' starting at the target element of the binding
myBinding.RelativeSource = New RelativeSource(RelativeSourceMode.FindAncestor, GetType(ItemsControl), 2)

Keterangan

Salah satu cara untuk menentukan sumber pengikatan adalah dengan menggunakan Binding.RelativeSource properti . Ini adalah jenis properti properti tersebut. RelativeSource secara bersamaan merupakan implementasi ekstensi markup dan objek data. Ketika ekstensi mengembalikan dirinya sendiri (lihat ProvideValue), informasi yang relevan terkandung dalam data. Tujuan utama ekstensi markup adalah untuk memungkinkan sintaks konstruktor argumen variabel dalam bentuk atribut, sehingga FindAncestor mode dapat didefinisikan sebaris dengan dua argumen tambahan untuk jenis dan tingkat leluhur yang tidak diperlukan mode lain.

Untuk informasi XAML, lihat RelativeSource MarkupExtension.

Konstruktor

Nama Deskripsi
RelativeSource()

Menginisialisasi instans baru dari kelas RelativeSource.

RelativeSource(RelativeSourceMode, Type, Int32)

Menginisialisasi instans RelativeSource baru kelas dengan mode awal dan kualifikasi berjalan di pohon tambahan untuk menemukan sumber relatif yang diinginkan.

RelativeSource(RelativeSourceMode)

Menginisialisasi instans RelativeSource baru kelas dengan mode awal.

Properti

Nama Deskripsi
AncestorLevel

Mendapatkan atau mengatur tingkat leluhur yang akan dicari, dalam FindAncestor mode. Gunakan 1 untuk menunjukkan yang paling dekat dengan elemen target pengikatan.

AncestorType

Mendapatkan atau mengatur jenis leluhur yang akan dicari.

Mode

Mendapatkan atau menetapkan RelativeSourceMode nilai yang menjelaskan lokasi sumber pengikatan relatif terhadap posisi target pengikatan.

PreviousData

Mendapatkan nilai statis yang digunakan untuk mengembalikan yang RelativeSource dibangun untuk mode tersebut PreviousData .

Self

Mendapatkan nilai statis yang digunakan untuk mengembalikan yang RelativeSource dibangun untuk mode tersebut Self .

TemplatedParent

Mendapatkan nilai statis yang digunakan untuk mengembalikan yang RelativeSource dibangun untuk mode tersebut TemplatedParent .

Metode

Nama Deskripsi
Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
ProvideValue(IServiceProvider)

Mengembalikan objek yang harus ditetapkan sebagai nilai pada properti objek target untuk ekstensi markup ini. Untuk RelativeSource, ini adalah sumber lain RelativeSource, menggunakan sumber yang sesuai untuk mode yang ditentukan.

ShouldSerializeAncestorLevel()

Menunjukkan apakah AncestorLevel properti harus dipertahankan.

ShouldSerializeAncestorType()

Menunjukkan apakah AncestorType properti harus dipertahankan.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

Nama Deskripsi
ISupportInitialize.BeginInit()

Anggota ini mendukung infrastruktur Windows Presentation Foundation (WPF) dan tidak dimaksudkan untuk digunakan langsung dari kode Anda.

ISupportInitialize.EndInit()

Anggota ini mendukung infrastruktur Windows Presentation Foundation (WPF) dan tidak dimaksudkan untuk digunakan langsung dari kode Anda.

Berlaku untuk

Lihat juga