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のように、Lableのテンプレートなどを定義できます。

この問題は、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);
}

任意のアイデアをいただければ幸いです。

よろしくGope

4

1 に答える 1

0

マイクロソフトにバグの苦情を申し立てた後、彼らは私に問題を指摘しました:セッターの値はオブジェクト型にすることはできません。この情報はXamlTypeInfoの生成に必要なので、オブジェクトDataTemplateに変更すると、コンパイルされました。

まだ試していませんが、オブジェクトはプレーンなWPFには問題ないと思いますが、Win 8 Storeアプリの場合、コンパイルエラーが発生します。面白いもの... :)

于 2013-03-04T09:26:19.890 に答える