1
4
你不能,这似乎是故意的。虽然我能理解你对所提到的书的处理方法,而且我决不会质疑它的质量,但我仍然认为这是某种复制粘贴或类似的问题。我的理由是: WPF属性系统代码
WPF物业系统设计
尤其是后两点概述了设计约束,依赖属性值总是可以通过 GetValue() / SetValue() ,无论其clr包装器是受访问限制还是完全可用,唯一的例外是 只读依赖项属性 . 因此,作为 Jeffs 答案已经暗示了,例如删除getter并不能真正阻止任何人通过 获取值() 尽管这至少可以 '减少自定义类的立即公开的命名空间' . 任何这样的语义解决方法的有用性,即使属性值变得不那么可见/不可访问,并且检索到的值对于客户机来说本质上是无用的,正如 Jeff 当然,这取决于你的具体情况。 |
2
2
有趣的是,这绝对是一个罕见的场景,我会有兴趣听到更多关于它的功能。 您是否会考虑在没有clr getter的情况下,为读取绑定或getValue提供一个无效的值(如null)? 或者使用私有DependencyProperty来存储您关心的“真实”值, 或 只是一个私有成员变量。 在属性更改回调中,始终将值还原回原始值,同时存储已设置的新值。 我现在大部分时间都花在开发Silverlight控件上,所以这个属性在WPF和Silverlight土地上工作,并且不使用胁迫或任何类似的乐趣。也许这会让你走上正轨。
|
3
0
看起来你可以用
确实“.net在强制之前会记住原始值”,但不会通过数据绑定进行传播。呼吁
我使用它来实现我的主属性值的单向方便设置器,它是一个字节序列。例如,用户可以绑定一个字符串,将主属性设置为编码的字节(ASCII或UTF-8,具体取决于设置的属性)。但并非所有的字节序列都是有效的UTF-8,因此不可能反转转换并通过便利属性读取字符串。
可以通过元数据替换来删除强制处理程序,因此这不提供 安全 但它将防止开发人员以错误的方式意外创建耦合。 |
4
-1
我不明白为什么你不能只得到“得到”就没有什么有用的东西? 但是,在Jeff的示例中,也许您没有实现“onMyWriteOnlyPendencyPropertyChanged”。 如果没有人能读懂的话,没有真正的理由去做这件事,对吧? |
CasualNobody · 公开UserControls内容模板 7 年前 |
Tom · WPF中相同usercontrol的不同实例中的不同值 7 年前 |
Johannes · 从UserControl获取绑定列表 7 年前 |
Mike Eason · 在数据触发器中使用依赖属性 9 年前 |