WINRT XAML System.Void编译错误

时间:2013-02-20 08:18:52

标签: windows-store-apps winrt-xaml

在Store App中进行一些代码更改后,我遇到了编译错误:

- > 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获取Label的Textbox,它不仅仅是一个字符串,而是像HeaderedControls一样,你可以为Lable定义一个模板等。

问题与AttachedProp的获取/设置方法有关。当我将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);
}

任何想法都将受到高度赞赏。

祝你好运 Gope

1 个答案:

答案 0 :(得分:0)

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

虽然我还没有尝试过,但我相信对象适用于纯WPF,但对于Win 8 Store应用程序,这会导致编译错误。有趣的东西...... :)