我有一个附加属性,我正在使用设计时程序集向设计师注册它。我正在使用 AttachedPropertyBrowsableForTypeAttribute 以便在选择 TextBox 时显示该属性。
该属性在 Expression Blend 4 中显示良好,但在 Visual Studio 2010 SP1 中不显示。
有谁知道为什么它不会出现在 Visual Studio 中?您可以从此处下载演示问题的测试项目: 测试项目
谢谢!
我有一个附加属性,我正在使用设计时程序集向设计师注册它。我正在使用 AttachedPropertyBrowsableForTypeAttribute 以便在选择 TextBox 时显示该属性。
该属性在 Expression Blend 4 中显示良好,但在 Visual Studio 2010 SP1 中不显示。
有谁知道为什么它不会出现在 Visual Studio 中?您可以从此处下载演示问题的测试项目: 测试项目
谢谢!
简短的回答确实是因为苹果酒设计师是一个完整的废话。这是更长的答案:
来自微软博客:
要记住的一件事是,在设计器中显示附加属性的要求之一是拥有类型需要由设计器加载。每当设计人员访问该类型时都会发生这种情况,因为它位于 XAML 源中或者是从 XAML 源加载的元素的依赖项。
所以问题是苹果酒设计师只关心已经加载的类型。您可以通过将包含的 Grid 更改为 StackPanel 来查看此示例:Grid.Row 和 Grid.Column 附加属性将从 Visual Studio 中的 TextBox 属性列表中消失。Blend 设计表面在某种程度上更加宽容,并且可以识别您的类型。此外,即使在使用 StackPanel 时,Blend 也会尽职尽责地显示 Grid.IsSharedSizeScope(在 Layout 属性下)。
看看微软如何使用和支持附加属性,他们似乎更喜欢在布局容器上使用它们。例如,有AttachedPropertyBrowsableForChildrenAttribute。这样您就可以为 Canvas 元素的子元素执行诸如 show Canvas.Left 之类的操作。我得到的印象是他们没有彻底考虑当今大多数人实际上是如何使用附加属性的(将功能固定到对象的一侧,而不是让功能从父级向下流动)。