【发布时间】:2011-07-20 22:12:56
【问题描述】:
好的,这只是我脑海中浮现的关于一种“仅伪写”依赖属性的想法。我说 sort of 是因为我实际上什至不希望存储该值,而是希望将传递给 setter 的值设置为 other 属性。作为一个假设的例子,我想这样做......
<button UIHelper.Bounds="10,10,40,20" />
而不是这个...
<button Canvas.Left="10" Canvas.Top="10" Width="40" Height="20" />
只是一个 XAML 键入方便的东西,它让我可以设置实际的四个属性,这要归功于一个只写附加属性。想想折叠的 CSS 规则。实际上,为此,还有另一个……
<border UIHelper.BrushSpec="AliceBlue Red 2 4" />
而不是...
<border Background="AliceBlue" BorderBrush="Red" BorderThickness="2" CornerRadius="4" />
现在以第一个为例,一个想法是在内部存储这样的结构,然后将其与现有的 Width、Height、Canvas.Left 和 Canvas.Top 属性同步,但我真的不打算阅读它退出,所以不需要。 (从技术上讲,我可以完全忽略它的存储,而只是在 propertychanged 处理程序中调用 ClearValue,但同样,它并不是真正用于将其读回,所以这只是为了保持一致性。)
从技术上讲,我什至不希望/不需要这是一个 DP,除了我的理解是,如果您需要从 XAML 设置它,它必须是一个 DP,因此我所追求的。如果我们可以设置一个直接的 .NET 属性,那将是完美的,因为我可以设置实现,并根据需要重新构建自己,但是我知道您不能从 XAML 访问 .NET 属性,因此我我回到这里。
现在是的,我知道这个概念会受到很多人的反对,尤其是 XAML 纯粹主义者,但我问的是 如何 而不是 为什么 所以如果没有其他原因,将其视为“可以完成”而不是“应该完成”的练习。我什至不建议这是我将使用的。我只是想更好地理解 DP 和 XAML 的限制,我发现这样的练习真的很有帮助。
那么,想法??
M
【问题讨论】:
标签: wpf xaml dependency-properties writeonly