为什么我的附属产品在Blend设计师中展示但在VS2010中却没有?

时间:2011-12-08 12:26:41

标签: wpf visual-studio-2010 expression-blend attached-properties cider

我有附属属性,我正在使用设计时组件向设计师注册。我正在使用AttachedPropertyBrowsableForTypeAttribute,以便在选择TextBox时显示该属性。

该属性在Expression Blend 4中显示正常,但在Visual Studio 2010 SP1中不显示。

Expression Blend

Visual Studio

有谁知道为什么它不会出现在Visual Studio中? 您可以从此处下载演示问题的测试项目: Test Project

谢谢!

1 个答案:

答案 0 :(得分:1)

简短的回答确实是因为苹果酒设计师是一个完整的废话。这是更长的答案:

来自Microsoft blog:

  

要记住的一件事是展示的要求之一   设计器中的附加属性是拥有类型需要的   已由设计师加载。每当设计师发生这种情况   访问该类型,因为它在XAML源中或是依赖项   从XAML源加载的元素。

所以问题是Cider设计师只关心已经加载的类型。您可以通过将包含的Grid更改为StackPanel来查看此示例:Grid.Row和Grid.Column附加属性将从Visual Studio中的TextBox属性列表中消失。 Blend设计表面在某种程度上更宽容,可以识别您的类型。此外,即使使用StackPanel,Blend也会尽职尽责地显示Grid.IsSharedSizeScope(在布局属性下)。

看看Microsoft如何使用和支持附加属性,他们似乎更喜欢在布局容器上使用它们。例如,AttachedPropertyBrowsableForChildrenAttribute就是{{3}}。这样你就可以为Canvas元素的子项显示Canvas.Left。我得到的印象是他们没有彻底考虑今天大多数人实际上如何使用附加属性(将功能固定在对象的一侧而不是从父母那里获得功能流下来)。