我玩弄WPF Usercontrols,并有以下问题:为什么属性初始化/分配的行为更改后属性是DependencyProperty
?WPF Usercontrol Property Intitialization
让我简要说明:
考虑了UserControl
类此代码:
public partial class myUserControl : UserControl
{
private string _blabla;
public myUserControl()
{
InitializeComponent();
_blabla = "init";
}
//public static DependencyProperty BlaBlaProperty = DependencyProperty.Register(
// "BlaBla", typeof(string), typeof(UserControlToolTip));
public string BlaBla
{
get { return _blabla; }
set { _blabla = value; }
}
}
这是UserControl
如何在XAML文件初始化:
<loc:myUserControl BlaBla="ddd" x:Name="myUsrCtrlName" />
问题我的是那行 set {_blabla = value; }仅在 DependencyProperty声明被注释掉时才被调用(按照此示例)。但是当 DependencyProperty行成为程序的一部分集{_blabla = value; }行不再被系统调用。
有人可以向我解释这种奇怪的行为吗?
非常感谢!
嗨@Blachshma,非常感谢这一点,但在这种情况下怎么办你*拦截* ** GetValue/SetValue **需要一个Dependance属性,你在哪里添加你自己的逻辑来改变值?我现在拦截在获取/设置位置的UserControl的新值的调用,以便根据该值在控件内部采取一些操作。 – pracheta986919
您可以在更改依赖项属性时创建回调方法。添加到我的答案示例 – Blachshma
非常感谢@Blachshma - 这是很好的帮助和建议!我得到了UserControl框架现在可以工作! – pracheta986919