好的,所以这只是我脑海中浮现的关于一种“仅伪写”依赖属性的想法。我之所以这么说,是因为我实际上什至不希望存储该值,而是希望将传递给 setter 的值用于设置其他属性。作为一个假设的例子,我想这样做......
<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 的限制,我发现这样的练习真的很有帮助。
所以,想法??
米