web-dev-qa-db-ja.com

タイプ「ウィンドウ」は直接コンテンツをサポートしていません

複数のプロジェクトで構成されるVS 2015で構築されたWPFソリューションがあります。突然、デザインモードで次のような警告が表示されるようになりました。

タイプ「ウィンドウ」は直接コンテンツをサポートしていません。

一部のコントロールが直接コンテンツをサポートしていないことは理解していますが、System.Windows.Windowする必要があります。 UserControlでも同じ警告が表示されますが、私が知る限り、通常直接コンテンツをサポートする他のコントロールもあります。

すべてがコンパイルされて正常に実行されますが、XAML全体に青い下線が表示されるのは面倒です。他の誰かがこれに遭遇しましたか?

以下はスクリーンショットです。

enter image description here

39
mrtedweb

必ずSystem.Xamlを参照してください。プロジェクトをクリーンにして再構築します。 VS 2015 Update 1で動作します。

58
Mark Richman

少なくともWPF IronPythonプロジェクトでは、System.Xamlプロジェクトへの参照は私のために問題を解決しました:

enter image description here

ここで注意すべき重要なことは、見かけ上any参照を追加すると、問題が一時的になくなることです-Visual Studioが再起動されるまで。 System.Xaml、一方で、問題を寄せ付けないように見えます。参照を削除しようとしても、Visual Studioの再起動時に問題が返されました。

29
Michael

私にとって、このエラーはクラスライブラリプロジェクトにWPFウィンドウを追加したために発生していました。

何らかの理由(私には不明)で、プロジェクトが作成されていない場合、Visual Studioは[Add New Item ...]ダイアログボックスからWPF Windowテンプレートを選択するオプションを提供しません。 WPFアプリケーションとして。代わりに、WPFユーザーコントロールを追加するオプションのみを提供します。そのため、新しいアイテムのユーザーコントロールテンプレートを選択し、ソースコードを編集してXAMLをユーザーコントロールではなくウィンドウオブジェクトに変更しました。

<!-- The new item was created as an UserControl, but what I needed was a Window object. -->
<UserControl>
   ...
</UserControl>

<!-- Changed it to Window and made other necessary adjustments. -->
<Window>
   ...
</Window>

問題は、実際には分離コードにありました。 User Controlとして作成されたため、ウィンドウの部分クラスは、次のようにUserControlを継承していました。

public partial class MyWindow : UserControl
{
    public MyWindow ()
    {
        InitializeComponent();
    }
}

これを修正するには、次のように継承を削除して、ウィンドウクラスを何も継承しないようにする必要がありました。

public partial class MyWindow
{
    public MyWindow ()
    {
        InitializeComponent();
    }
}

継承を削除した後、Visual Studioは「タイプ 'ウィンドウ'は直接コンテンツをサポートしていません」というエラーを表示しませんでした。もう。

4
Ulysses Alves

@mark Richmanに代わって、「System.Xaml」を自動的に参照するようにItemtemplateを編集しました。興味がある人のために:

enter image description here

「[VS InstallDir]\Common7\IDE\ItemTemplates\VisualBasic\WPF\[InputLocale]\WPFWindow」にあります。

BR、ダニエル

1
dba