RelativeSource Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Implementuje rozszerzenie znaczników opisujące lokalizację źródła powiązania względem położenia obiektu docelowego powiązania.
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
- Dziedziczenie
- Atrybuty
- Implementuje
Przykłady
W poniższym przykładzie pokazano wyzwalacz stylu, który tworzy element ToolTip , który zgłasza komunikat o błędzie weryfikacji. RelativeSource Przy użyciu właściwości wartość ustawiającego wiąże się z zawartością błędu bieżącego TextBox (TextBoxprzy użyciu stylu). Aby uzyskać więcej informacji na temat tego przykładu, zobacz How to: Implement Binding Validation (Instrukcje: implementowanie weryfikacji powiązań).
<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>
Poniższy przykład przedstawia definicję Style kontrolki niestandardowej o nazwie NumericUpDown
. Właściwość TextTextBlock obiektu jest powiązana z Value
obiektem , który jest TemplatedParent
kontrolką NumericUpDown
, do Style której jest zastosowana w tym przypadku.
<!--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>
Poniższe polecenie zwraca drugi ItemsControl napotkany na ścieżce w górę, zaczynając od elementu docelowego powiązania.
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)
Uwagi
Jednym ze sposobów określenia źródła powiązania jest użycie Binding.RelativeSource właściwości . Jest to typ właściwości tej właściwości. RelativeSource jest jednocześnie implementacją rozszerzenia znaczników i obiektem danych. Gdy rozszerzenie zwraca się (zobacz ProvideValue), odpowiednie informacje są zawarte w danych. Głównym celem rozszerzenia znaczników jest zezwolenie na składnię konstruktora argumentu zmiennej w postaci atrybutu, dzięki czemu FindAncestor tryb można zdefiniować w tekście z dwoma dodatkowymi argumentami dla typu i poziomu, że inne tryby nie wymagają.
Aby uzyskać informacje dotyczące języka XAML, zobacz RelativeSource MarkupExtension.
Konstruktory
RelativeSource() |
Inicjuje nowe wystąpienie klasy RelativeSource. |
RelativeSource(RelativeSourceMode) |
Inicjuje RelativeSource nowe wystąpienie klasy w trybie początkowym. |
RelativeSource(RelativeSourceMode, Type, Int32) |
Inicjuje nowe wystąpienie RelativeSource klasy z trybem początkowym i dodatkowymi kwalifikatorami chodzenia drzewami w celu znalezienia żądanego względnego źródła. |
Właściwości
AncestorLevel |
Pobiera lub ustawia poziom przodka do wyszukania w FindAncestor trybie. Użyj wartości 1, aby wskazać element docelowy powiązania najbliższego. |
AncestorType |
Pobiera lub ustawia typ przodka do wyszukania. |
Mode |
Pobiera lub ustawia wartość, która opisuje lokalizację RelativeSourceMode źródła powiązania względem pozycji obiektu docelowego powiązania. |
PreviousData |
Pobiera wartość statyczną, która jest używana do zwracania RelativeSource konstrukcji dla PreviousData trybu. |
Self |
Pobiera wartość statyczną, która jest używana do zwracania RelativeSource konstrukcji dla Self trybu. |
TemplatedParent |
Pobiera wartość statyczną, która jest używana do zwracania RelativeSource konstrukcji dla TemplatedParent trybu. |
Metody
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ProvideValue(IServiceProvider) |
Zwraca obiekt, który należy ustawić jako wartość we właściwości obiektu docelowego dla tego rozszerzenia znaczników. W przypadku RelativeSourceprogramu jest to inny RelativeSourceelement , używając odpowiedniego źródła dla określonego trybu. |
ShouldSerializeAncestorLevel() |
Wskazuje, czy AncestorLevel właściwość powinna być utrwalone. |
ShouldSerializeAncestorType() |
Wskazuje, czy AncestorType właściwość powinna być utrwalone. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Jawne implementacje interfejsu
ISupportInitialize.BeginInit() |
Ten element członkowski obsługuje infrastrukturę Windows Presentation Foundation (WPF) i nie jest przeznaczony do użycia bezpośrednio z kodu. |
ISupportInitialize.EndInit() |
Ten element członkowski obsługuje infrastrukturę Windows Presentation Foundation (WPF) i nie jest przeznaczony do użycia bezpośrednio z kodu. |