1

在商店应用程序中进行了一些代码更改后,我遇到了编译错误:

-> System.Void 不能在 C# 中使用——使用 typeof(void) 来获取 void 类型对象。

问题是:这来自生成的文件:XamlTypeInfo.g.cs。

case "System.Void"
    userType= new ... ,typeof(global::System.Void), ...
    ...

回滚更改没有帮助,例如删除 bin 和 obj、重新启动等。

实际的 System.Void 案例条目是否可能表明代码生成器无法识别 XAML 文件中的某些内容?工作的 XamlTypeInfo.g.cs 中是否有 System.Void 条目?

--- 添加 --- 我现在可以在更改特定行时产生编译错误。我有一个从 ItemsControl 派生的自定义控件。我定义了一个正常工作的常规 DP。我还为 Template、TemplateSelector 和 Style 提供 AttachedProperties。想想一个通过 AttachedProperty 获取标签的文本框,它不仅是一个字符串,而且像 HeaderedControls 一样,您可以为标签定义一个模板等。

问题与 AttachedProp 的 Get/Set 方法有关。当我将 Getter 返回类型更改为 DataTemplate 或完全注释掉 Setter 时,就会出现编译错误:

public static DataTemplate GetLabelTEmplate(UIElement element)
{
    return (DataTemplate)element.GetValue(LabelTemplateProperty;
}

public static void SetLabelTemplate(UIElement element, object value)
{
    element.SetValue(LabelTemplateProperty, value);
}

任何想法将不胜感激。

最好的问候戈佩

4

1 回答 1

0

在向微软提交错误投诉后,他们向我指出了问题:setter 的值不能是 object 类型。XamlTypeInfo 生成需要此信息,因此当我将对象更改为DataTemplate时,它​​已编译。

虽然我还没有尝试过,但我相信 object 对于普通的 WPF 来说很好,但对于 Win 8 Store 应用程序,这确实会导致编译错误。有趣的事... :)

于 2013-03-04T09:26:19.890 回答