RelativeSource Klasse

Definition

Implementiert eine Markuperweiterung, die den Speicherort der Bindungsquelle relativ zur Position des Bindungsziels beschreibt.Implements a markup extension that describes the location of the binding source relative to the position of the binding target.

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
Vererbung
RelativeSource
Attribute
Implementiert

Beispiele

Das folgende Beispiel zeigt einen Stil--Fehler, der eine erstellt ToolTip , die eine Validierungs Fehlermeldung meldet.The following example shows a style trigger that creates a ToolTip that reports a validation error message. Mithilfe der- RelativeSource Eigenschaft bindet der Wert des Setters an den Fehler Inhalt des aktuellen-Objekts TextBox ( TextBox mit dem-Stil).Using the RelativeSource property, the value of the setter binds to the error content of the current TextBox (the TextBox using the style). Weitere Informationen zu diesem Beispiel finden Sie unter Gewusst wie: Implementieren der Bindungs Validierung.For more information on this example, see How to: Implement Binding Validation.

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

Das folgende Beispiel zeigt die Style Definition eines benutzerdefinierten Steuer Elements namens NumericUpDown .The following example shows the Style definition of a custom control called NumericUpDown. Die- Text Eigenschaft des- TextBlock Objekts wird an die Value des-Objekts gebunden, das ist. dies TemplatedParent ist das Steuerelement, NumericUpDown auf das Style in diesem Fall angewendet wird.The Text property of the TextBlock is bound to the Value of the object that is the TemplatedParent, which is the NumericUpDown control that this Style is applied to in this case.

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

Das komplette Beispiel finden Sie unter "NumericUpDown Custom Control with Theme and UI Automation Support Sample".For the complete sample, see NumericUpDown Custom Control with Theme and UI Automation Support Sample.

Im folgenden wird der zweite Wert zurückgegeben, der ItemsControl auf dem aufwärts gerichteten Pfad beginnt, beginnend beim Ziel Element der Bindung.The following returns the second ItemsControl encountered on the upward path starting at the target element of the binding.

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)

Hinweise

Eine der Möglichkeiten, eine Bindungs Quelle anzugeben, besteht in der Verwendung der- Binding.RelativeSource Eigenschaft.One of the ways to specify a binding source is to use the Binding.RelativeSource property. Dies ist der Eigenschaftentyp dieser Eigenschaft.This is the property type of that property. RelativeSource ist gleichzeitig eine Markup Erweiterungs Implementierung und ein Datenobjekt.RelativeSource is simultaneously a markup extension implementation and a data object. Wenn die Erweiterung sich selbst zurückgibt (siehe ProvideValue ), sind die relevanten Informationen in den Daten enthalten.When the extension returns itself (see ProvideValue), the relevant information is contained in the data. Der Hauptzweck der Markup Erweiterung besteht darin, eine Variablen Argument-Konstruktorsyntax in Attribut Form zuzulassen, damit der FindAncestor Modus Inline mit den beiden zusätzlichen Argumenten für den Vorgänger Typ und die Ebene definiert werden kann, die für die anderen Modi nicht erforderlich sind.The main purpose of the markup extension is to allow a variable-argument constructor syntax in attribute form, so that the FindAncestor mode can be defined inline with the two extra arguments for ancestor type and level that the other modes do not require.

Weitere XAMLXAML Informationen finden Sie unter RelativeSource MarkupExtension.For XAMLXAML information, see RelativeSource MarkupExtension.

Konstruktoren

RelativeSource()

Initialisiert eine neue Instanz der RelativeSource-Klasse.Initializes a new instance of the RelativeSource class.

RelativeSource(RelativeSourceMode)

Initialisiert eine neue Instanz der RelativeSource-Klasse mit einem Anfangsmodus.Initializes a new instance of the RelativeSource class with an initial mode.

RelativeSource(RelativeSourceMode, Type, Int32)

Initialisiert eine neue Instanz der RelativeSource-Klasse mit einem Anfangsmodus und zusätzlichen Qualifizierern, die bei der Suche nach der gewünschten relativen Quelle die Struktur durchlaufen.Initializes a new instance of the RelativeSource class with an initial mode and additional tree-walking qualifiers for finding the desired relative source.

Eigenschaften

AncestorLevel

Ruft die zu beachtende Vorgängerebene im FindAncestor-Modus ab oder legt diese fest.Gets or sets the level of ancestor to look for, in FindAncestor mode. Verwenden Sie 1, um die Ebene anzugeben, die dem Bindungszielelement am nächsten ist.Use 1 to indicate the one nearest to the binding target element.

AncestorType

Ruft den Typ des gesuchten übergeordneten Elements ab oder legt ihn fest.Gets or sets the type of ancestor to look for.

Mode

Ruft einen RelativeSourceMode-Wert ab, der den Speicherort der Bindungsquelle relativ zur Position des Bindungsziels beschreibt, oder legt diesen fest.Gets or sets a RelativeSourceMode value that describes the location of the binding source relative to the position of the binding target.

PreviousData

Ruft einen statischen Wert ab, mit dem eine für den RelativeSource-Modus erstellte PreviousData zurückgegeben wird.Gets a static value that is used to return a RelativeSource constructed for the PreviousData mode.

Self

Ruft einen statischen Wert ab, mit dem eine für den RelativeSource-Modus erstellte Self zurückgegeben wird.Gets a static value that is used to return a RelativeSource constructed for the Self mode.

TemplatedParent

Ruft einen statischen Wert ab, mit dem eine für den RelativeSource-Modus erstellte TemplatedParent zurückgegeben wird.Gets a static value that is used to return a RelativeSource constructed for the TemplatedParent mode.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
GetHashCode()

Dient als die Standard-HashfunktionServes as the default hash function.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
ProvideValue(IServiceProvider)

Gibt ein Objekt zurück, das als Wert für die Eigenschaft des Zielobjekts für diese Markuperweiterung festgelegt werden muss.Returns an object that should be set as the value on the target object's property for this markup extension. Für die RelativeSource ist dies eine andere RelativeSource, die die entsprechende Quelle für den angegebenen Modus verwendet.For RelativeSource, this is another RelativeSource, using the appropriate source for the specified mode.

ShouldSerializeAncestorLevel()

Gibt an, ob die AncestorLevel-Eigenschaft beibehalten werden soll.Indicates whether the AncestorLevel property should be persisted.

ShouldSerializeAncestorType()

Gibt an, ob die AncestorType-Eigenschaft beibehalten werden soll.Indicates whether the AncestorType property should be persisted.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

ISupportInitialize.BeginInit()

Dieser Member unterstützt die Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)-Infrastruktur und ist nicht für die direkte Verwendung im Code vorgesehen.This member supports the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

ISupportInitialize.EndInit()

Dieser Member unterstützt die Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)-Infrastruktur und ist nicht für die direkte Verwendung im Code vorgesehen.This member supports the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

Gilt für:

Weitere Informationen