RelativeSource Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Implementuje rozšíření značek, které popisuje umístění zdroje vazby vzhledem k pozici cíle vazby.
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
- Dědičnost
- Atributy
- Implementuje
Příklady
Následující příklad ukazuje trigger stylu, který vytvoří chybovou ToolTip zprávu o ověření. RelativeSource Pomocí vlastnosti se hodnota setter vytvoří vazbu na obsah chyby aktuálního TextBox (TextBoxpomocí stylu). Další informace o tomto příkladu najdete v tématu Postupy: Implementace ověření vazby.
<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>
Následující příklad ukazuje definici Style vlastního ovládacího prvku s názvem NumericUpDown
. Vlastnost TextTextBlock je vázána na Value
objekt , který je TemplatedParent
, což je NumericUpDown
ovládací prvek, na který Style se v tomto případě použije.
<!--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>
Následující vrátí druhý ItemsControl nalezený na cestě nahoru počínaje cílovým prvkem vazby.
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)
Poznámky
Jedním ze způsobů, jak určit zdroj vazby, je použít Binding.RelativeSource vlastnost . Toto je typ vlastnosti této vlastnosti. RelativeSource je současně implementace rozšíření značek a datový objekt. Když se rozšíření vrátí samo (viz ProvideValue), jsou v datech obsaženy příslušné informace. Hlavním účelem rozšíření značek je povolit syntaxi konstruktoru argumentu proměnné ve formě atributu FindAncestor , aby bylo možné režim definovat přímo se dvěma argumenty navíc pro nadřazený typ a úroveň, kterou ostatní režimy nevyžadují.
Informace o XAML najdete v tématu RelativeSource MarkupExtension.
Konstruktory
RelativeSource() |
Inicializuje novou instanci RelativeSource třídy. |
RelativeSource(RelativeSourceMode) |
Inicializuje novou instanci RelativeSource třídy s počátečním režimem. |
RelativeSource(RelativeSourceMode, Type, Int32) |
Inicializuje novou instanci RelativeSource třídy s počátečním režimem a další stromové kvalifikátory pro vyhledání požadovaného relativního zdroje. |
Vlastnosti
AncestorLevel |
Získá nebo nastaví úroveň nadřazenosti, která se má hledat, v FindAncestor režimu. Použijte 1 k označení toho, který je nejblíže k cílovému elementu vazby. |
AncestorType |
Získá nebo nastaví typ nadřazeného, který chcete hledat. |
Mode |
Získá nebo nastaví RelativeSourceMode hodnotu, která popisuje umístění zdroje vazby vzhledem k pozici cíle vazby. |
PreviousData |
Získá statickou hodnotu, která se používá k vrácení RelativeSource vytvořené pro PreviousData režim. |
Self |
Získá statickou hodnotu, která se používá k vrácení RelativeSource vytvořené pro Self režim. |
TemplatedParent |
Získá statickou hodnotu, která se používá k vrácení RelativeSource vytvořené pro TemplatedParent režim. |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ProvideValue(IServiceProvider) |
Vrátí objekt, který by měl být nastaven jako hodnota ve vlastnosti cílového objektu pro toto rozšíření značek. V případě RelativeSourcese jedná o jiný RelativeSourcezdroj s použitím příslušného zdroje pro zadaný režim. |
ShouldSerializeAncestorLevel() |
Určuje, zda AncestorLevel má být vlastnost trvalá. |
ShouldSerializeAncestorType() |
Určuje, zda AncestorType má být vlastnost trvalá. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
ISupportInitialize.BeginInit() |
Tento člen podporuje infrastrukturu Windows Presentation Foundation (WPF) a není určen k použití přímo z vašeho kódu. |
ISupportInitialize.EndInit() |
Tento člen podporuje infrastrukturu Windows Presentation Foundation (WPF) a není určen k použití přímo z vašeho kódu. |