【发布时间】:2009-08-18 19:18:49
【问题描述】:
我正在尝试在我的 ObjectDataSource 中使用嵌套类型,例如 this 文章。它似乎不适合我。
<ObjectDataProvider x:Key="myProvider" ObjectType="{x:Type local:OutsideClass+InsideClass}" MethodName="GetObjects" />
【问题讨论】:
我正在尝试在我的 ObjectDataSource 中使用嵌套类型,例如 this 文章。它似乎不适合我。
<ObjectDataProvider x:Key="myProvider" ObjectType="{x:Type local:OutsideClass+InsideClass}" MethodName="GetObjects" />
【问题讨论】:
这是 VS 2008 及更高版本中的一个已知问题。 Microsoft's official position is that you shouldn't be doing this:
虽然您正在编写的 XAML 显然是合法的、在运行时工作并在 Expression Blend 中正确加载,但我们目前认为在应用程序构建中使用和访问来自标记扩展的嵌套类并不常见。
【讨论】:
解决x:Type 对嵌套类型的引用的一种方法是定义一个新的标记扩展并使用它来代替x:Type 标记扩展。我在this answer 中发布了关于此类的信息,包括Type2Extension 类的来源。
Type2Extension 不会像TypeExtension 那样产生设计错误。 也许这在 VS 2010 中不会发生。
唯一需要注意的是,与{x:Type 一起使用的原始TypeExtension typename} 比Type2Extension 更健壮一些(例如,检查参数是否为空并抛出异常)。
【讨论】: