using System.Windows; namespace DependencyPropertyDemo1 { public class Student:DependencyObject { public static readonly DependencyProperty NameProperty = DependencyProperty.Register("Name",typeof(string),typeof(Student)); // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc... public static readonly DependencyProperty AgeProperty = DependencyProperty.Register("Age", typeof(int), typeof(Student)); public string Name { get { return (string)GetValue(NameProperty); } set { SetValue(NameProperty, value); } } public int Age { get { return (int)GetValue(AgeProperty); } set { SetValue(AgeProperty, value); } } } }
<Window x:Class="DependencyPropertyDemo1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="110,139,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" /> <TextBox Height="23" HorizontalAlignment="Left" Margin="110,34,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" /> <TextBox Height="23" HorizontalAlignment="Left" Margin="110,74,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" /> </Grid> </Window>
using System.Windows; namespace DependencyPropertyDemo1 { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { Student stu = new Student(); stu.Name = this.textBox1.Text; this.textBox2.Text = stu.Name; } } }
用法二:
using System.Windows; using System.Windows.Data; namespace DependencyPropertyDemo2 { public class Student:DependencyObject { public static readonly DependencyProperty nameProperty = DependencyProperty.Register("Name",typeof(string),typeof(Student)); public string Name { get { return (string)GetValue(nameProperty); } set { SetValue(nameProperty,value); } } public BindingExpressionBase SetBinding(DependencyProperty dp, BindingBase binding) { return BindingOperations.SetBinding(this,dp,binding); } } }
<Window x:Class="DependencyPropertyDemo2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <TextBox Height="23" HorizontalAlignment="Left" Margin="110,34,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" /> <TextBox Height="23" HorizontalAlignment="Left" Margin="110,74,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" /> </Grid> </Window>
using System.Windows; using System.Windows.Controls; using System.Windows.Data; namespace DependencyPropertyDemo2 { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Student stu = new Student(); stu.SetBinding(Student.nameProperty, new Binding("Text") { Source = this.textBox1}); textBox2.SetBinding(TextBox.TextProperty, new Binding("Name") { Source = stu}); } } }