与私有CLR属性相比,与私有依赖项属性绑定的工作方式不同
我有一个窗口,DataContext设置为自己这个简单的XAML布局 –
<StackPanel> <TextBlock Text="{Binding NameCLR}"/> <TextBlock Text="{Binding NameDP}"/> </StackPanel> 在代码后面我有两个属性NameCLR – CLR属性和NameDP – 依赖属性. private string NameCLR { get { return "CLRProperty"; } } private string NameDP { get { return (string)GetValue(NameDPProperty); } set { SetValue(NameDPProperty,value); } } private static readonly DependencyProperty NameDPProperty = DependencyProperty.Register("NameDP",typeof(string),typeof(MainWindow),new UIPropertyMetadata("DPProperty")); 由于代码隐藏是部分类定义,而部分是XAML.所以,我假设私有财产应该对XAML可见.但令我惊讶的是,CLR和DP表现不同.
我把输出作为 – DPProperty 代替 CLRProperty DPProperty 有人能让我知道DP和CLR属性中的这种不同行为吗? 解决方法
绑定属性由Binding访问,而不是由声明类访问.像NameCLR这样的私有CLR属性是不可访问的,因此Binding将不起作用.
但是,在解析属性路径NameDP时,Binding显然会绕过该属性的CLR包装器并直接访问底层依赖项属性,该属性通过调用DependencyProperty.Register向依赖项属性系统注册.是否已将返回的DependencyProperty引用分配给类中的私有或公共静态字段无关紧要.依赖属性已为您的类注册,因此可以查找它. 来自链接here –
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |