1.依赖属性不同意一般属性,一般属性主要定义在对象中,而依赖属性是存在一个特殊的依赖属性表中。
2.当我们触发改变值时,需要通过SetValue这种方式进行触发。
UserControl1.xaml:
<UserControl x:Class="WpfApplication1.UserControl1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WpfApplication1" mc:Ignorable="d" Name="myUserControl" d:DesignHeight="300" d:DesignWidth="300"> <Grid> <TextBox Name="textBox" TextChanged="textBox_TextChanged"></TextBox> </Grid> </UserControl>
UserControl1.xml.cs:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; 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 WpfApplication1 { /// <summary> /// UserControl1.xaml 的交互逻辑 /// </summary> public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } public static readonly DependencyProperty TextContentProperty; static UserControl1() { UserControl1.TextContentProperty = DependencyProperty.Register("TextContent", typeof(string), typeof(UserControl1)); } public string TextContent { get { return (string)GetValue(UserControl1.TextContentProperty); } set { SetValue(UserControl1.TextContentProperty, value); } } private void textBox_TextChanged(object sender, TextChangedEventArgs e) { TextBox box = (TextBox)sender; this.SetValue(TextContentProperty, box.Text); } } }