【问题标题】:Why does my Attached Property show in Blend designer but not in VS2010?为什么我的附加属性在 Blend 设计器中显示,但在 VS2010 中不显示?
【发布时间】:2011-12-08 12:26:40
【问题描述】:
我有一个附加属性,我正在使用设计时程序集向设计器注册它。我正在使用 AttachedPropertyBrowsableForTypeAttribute,以便在选择 TextBox 时显示该属性。
该属性在 Expression Blend 4 中显示良好,但在 Visual Studio 2010 SP1 中不显示。
有谁知道为什么它不会出现在 Visual Studio 中?
您可以从此处下载演示问题的测试项目:
Test Project
谢谢!
【问题讨论】:
标签:
wpf
visual-studio-2010
expression-blend
attached-properties
cider
【解决方案1】:
简短的回答确实是因为苹果酒设计师完全是一坨屎。这是更长的答案:
来自Microsoft blog:
要记住的一件事是展示的要求之一
设计器中的附加属性是拥有类型需要
已由设计师加载。每当设计师
访问该类型,因为它在 XAML 源中或者是依赖项
从 XAML 源加载的元素。
所以问题是苹果酒设计者只关心已经加载的类型。您可以通过将包含的 Grid 更改为 StackPanel 来查看此示例:Grid.Row 和 Grid.Column 附加属性将从 Visual Studio 中的 TextBox 属性列表中消失。 Blend 设计表面在某种程度上更加宽容,并且可以识别您的类型。此外,即使在使用 StackPanel 时,Blend 也会尽职尽责地显示 Grid.IsSharedSizeScope(在 Layout 属性下)。
看看微软如何使用和支持附加属性,他们似乎更喜欢在布局容器上使用它们。例如有AttachedPropertyBrowsableForChildrenAttribute。这样您就可以为 Canvas 元素的子元素执行诸如 show Canvas.Left 之类的操作。我的印象是,他们没有彻底考虑当今大多数人实际上是如何使用附加属性的(将功能固定到对象的一侧,而不是让功能从父对象向下流动)。