<Window x:Class="TestOfRelativeSource.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="350" Width="525"> <Grid x:Name="g1" Background="Red" Margin="10"> <DockPanel x:Name="d1" Background="Orange" Margin="10" > <Grid x:Name="g2" Background="Yellow" Margin="10" > <DockPanel x:Name="d2" Background="LawnGreen" Margin="10" > <TextBox x:Name="textBox1" FontSize="24" Margin="10" /> </DockPanel> </Grid> </DockPanel> </Grid> </Window>
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace TestOfRelativeSource { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); //RelativeSource rs = new RelativeSource(RelativeSourceMode.FindAncestor); //rs.AncestorLevel = 1; //rs.AncestorType = typeof (Grid); //Binding binding = new Binding("Name") //{ // RelativeSource = rs //}; //this.textBox1.SetBinding(TextBox.TextProperty, binding); //RelativeSource rs = new RelativeSource(); //rs.AncestorLevel = 2; //rs.AncestorType = typeof (DockPanel); //Binding binding = new Binding("Name") //{ // RelativeSource = rs //}; //this.textBox1.SetBinding(TextBox.TextProperty, binding); this.textBox1.SetBinding(TextBox.TextProperty, new Binding("Name") { RelativeSource = new RelativeSource() { Mode = RelativeSourceMode.Self } }); } } }