Share via


Binding.RelativeSource Properti

Definisi

Mendapatkan atau mengatur sumber pengikatan dengan menentukan lokasinya relatif terhadap posisi target pengikatan. Ini paling sering digunakan dalam pengikatan dalam templat kontrol XAML.

RelativeSource RelativeSource();

void RelativeSource(RelativeSource value);
public RelativeSource RelativeSource { get; set; }
var relativeSource = binding.relativeSource;
binding.relativeSource = relativeSource;
Public Property RelativeSource As RelativeSource
<Binding RelativeSource="{RelativeSource TemplatedParent}"/>
-or-
<Binding RelativeSource="{RelativeSource Self}"/>

Nilai Properti

Lokasi relatif sumber pengikatan yang akan digunakan. Defaultnya adalah null.

Contoh

Contoh XAML ini diambil dari file generic.xaml yang menentukan status visual default untuk semua kontrol XAML. Segmen khusus ini adalah salah satu status visual untuk kontrol ToggleSwitch . Di sini, salah satu animasi yang ditentukan oleh status visual mereferensikan properti kontrol yang ada secara khusus sehingga templat dapat mengaksesnya dan mendapatkan nilai run-time yang memodifikasi animasi. Agar templat XAML mendapatkan properti dari kontrol tempat templat diterapkan, pengikatan harus digunakan {RelativeSource TemplatedParent} sebagai nilai RelativeSource.

<VisualStateGroup x:Name="ToggleStates">
  <VisualStateGroup.Transitions>
    <VisualTransition x:Name="DraggingToOnTransition"
      From="Dragging"
      To="On"
      GeneratedDuration="0">
      <Storyboard>
        <RepositionThemeAnimation TargetName="SwitchKnob" 
          FromHorizontalOffset="
          {Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.KnobCurrentToOnOffset}"
        />
        <RepositionThemeAnimation TargetName="SwitchCurtain"
          FromHorizontalOffset="
          {Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.CurtainCurrentToOnOffset}"
        />
      </Storyboard>
    </VisualTransition>
...
  </VisualStateGroup.Transitions>
</VisualStateGroup>

Keterangan

Sumber, RelativeSource, dan ElementName saling eksklusif dalam pengikatan. Jika Anda telah mengatur salah satu atribut ini, pengaturan salah satu dari dua lainnya dalam pengikatan (melalui XAML atau melalui kode) akan menyebabkan pengecualian. Mengatur RelativeSource di XAML selalu memerlukan penggunaan ekstensi markup {RelativeSource}. Ini juga berlaku jika Anda membuat seluruh pengikatan sebagai ekstensi markup {Binding}, dalam hal ini ekstensi markup {RelativeSource} disarangkan dalam komponen RelativeSource ekspresi.

Anda tidak dapat mengatur nilai properti objek Pengikatan setelah pengikatan tersebut dilampirkan ke elemen target dan properti target. Jika Anda mencoba ini, Anda akan mendapatkan pengecualian run-time.

Berlaku untuk

Lihat juga