【问题标题】:Design time error while writing Nested type in xaml在 xaml 中编写嵌套类型时出现设计时错误
【发布时间】:2010-02-17 07:15:34
【问题描述】:

我创建了一个用户控件,它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件。非常简单。 我在 DataTemplates 中使用这个用户控件。当嵌套类型出现时,问题就来了。 我使用这个符号分配它

EnumType="{x:Type myNamespace:ParentType + NestedType}"

它在运行时运行良好。但在设计时它会抛出错误提示

Could not create an instance of type 'TypeExtension'

为什么? 因此,我无法在设计时看到我的窗口。有什么帮助吗?

【问题讨论】:

  • 你能贴一点铁道部代码吗?
  • 这是在 Visual Studio 中吗?混合?
  • @AaronMcIver:这是在 Visual Studio 中,我还没有检查过 Blend。
  • @viky 添加了答案,问题/缺陷看起来只是 VS。

标签: c# wpf xaml user-controls nested


【解决方案1】:

根据this post,你需要利用MarkupExtension类提供的能力。

但是还有另一种解决方法:

<ObjectDataProvider 
    MethodName="GetValues"
    ObjectType="{x:Type sys:Enum}"
    x:Key="NestedEnumDataProvider">
    <ObjectDataProvider.MethodParameters>
        <x:Type TypeName="myNamespace:ParentType+NestedType"/>
    </ObjectDataProvider.MethodParameters>
</ObjectDataProvider>

【讨论】:

    【解决方案2】:

    According to Rob Relyea 来自 Microsoft,这是 VS2008/2010 设计器中的一个缺陷。

    我们有人研究了 {x:Type Foo+Bar} 模式的用法并进行了测试 它在 VS2010 和 Blend4 中。看来它在运行时工作正常, Blend 4 中的 CompileTime,但在 VS2010 的 WPF 设计器中失败。

    我们提交了一个错误,并将其发送给 WPF 设计器团队。

    【讨论】:

      猜你喜欢
      • 2022-12-10
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 2011-01-01
      • 2011-02-26
      相关资源
      最近更新 更多