ObjectDataProvider 标记中的引用嵌套类型
我正在尝试在我的 ObjectDataSource 中使用嵌套类型,如 这篇 文章。这似乎对我不起作用。
<ObjectDataProvider x:Key="myProvider" ObjectType="{x:Type local:OutsideClass+InsideClass}" MethodName="GetObjects" />
I'm trying to use a nested type in my ObjectDataSource a la this article. It doesn't seem to be working for me.
<ObjectDataProvider x:Key="myProvider" ObjectType="{x:Type local:OutsideClass+InsideClass}" MethodName="GetObjects" />
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是 VS 2008 及更高版本中的一个已知问题。 Microsoft 的官方立场是您不应该这样做 :
This is a known issue in VS 2008 and beyond. Microsoft's official position is that you shouldn't be doing this:
解决
x:Type
对嵌套类型引用的一种方法是定义一个新的标记扩展并使用它来代替x:Type
标记扩展。我在 这个答案。Type2Extension
不会像TypeExtension
那样产生设计者错误。也许这不会在 VS 2010 中发生。唯一需要注意的是,与
{x:Type
typename< 一起使用的原始TypeExtension
/em>}
比Type2Extension
更健壮(例如,检查参数是否为空并抛出异常)。One way to work around
x:Type
references to nested types is to define a new markup extension and use it instead of thex:Type
markup extension. I posted information about one such, including source for theType2Extension
class, in this answer.The
Type2Extension
will not produce designer errors like theTypeExtension
does.Perhaps this will not occur in VS 2010.The only caveat is that the original
TypeExtension
you use with{x:Type
typename}
is a little more robust thanType2Extension
(e.g., checking if arguments are null and throwing exceptions).