12

私は WPF を初めて使用し、エラーを解決しようとしています。独自のコントロール オブジェクトを作成できるカスタム コントロール ライブラリを構築しようとしています。[ファイル] > [新しいプロジェクト] > [WPF カスタム コントロール ライブラリ] > [名前を入力] > [保存] に移動すると、インスタント エラー:

The name "CustomControl1" does not exist in the namespace "clr-namespace:ProjectName"

コードを編集しませんでしたが、すぐにエラーが発生しました。参考までに、エラーは Generic.xaml 内にあります。

<ResourceDictionary
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       xmlns:local="clr-namespace:ProjectName">
       <Style TargetType="{x:Type local:CustomControl1}">  //<--Fails here
           <Setter Property="Template">
               <Setter.Value>
                   <ControlTemplate TargetType="{x:Type local:CustomControl1}">  // Fails here as well
                       <Border Background="{TemplateBinding Background}"
                               BorderBrush="{TemplateBinding BorderBrush}"
                               BorderThickness="{TemplateBinding BorderThickness}">

                       </Border>
                   </ControlTemplate>
               </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>

Visual Studio 12 と .NET 4 を使用しています。

4

7 に答える 7

15

これはビルド エラーではなく IntelliSense エラーであるため、プロジェクトのビルドには影響しません。このエラーを解決するには、次のいずれかを行います。

  • プロジェクトをビルドする、または
  • ドキュメントを編集します (たとえば>、タグから a を削除してから追加し直すなど)。

ドキュメントを開くと、XAML デザイナーがバックグラウンドで読み込まれ、IntelliSense 情報が提供されます。ビルドされていない型 (つまり、現在のソリューションで定義されているが、まだアセンブリにビルドされていない型) の情報を非同期に読み込みます。多くの場合、このプロセスは、デザイナーがドキュメントの最初の解析を完了した後に完了します。

プロジェクトをビルドすると、ビルドされていない型がビルドされ (問題が解決されます)、ドキュメントに重要な編集を行うと、デザイナーは新しく利用可能な型情報を使用してドキュメントを再解析します (理想的には、ドキュメントは、未構築の型情報が利用可能になります)。

于 2012-09-24T17:09:10.423 に答える
4

James McNellis の回答によると、私の場合、エラーの原因となっている XAML セクションをコメントアウトする必要があり (エラーが再構築を許可しなかったため)、ファイル自体を閉じて、VS で開かないようにする必要がありました。ビルドを成功させます。次に、XAML セクションのコメントを外すと、VS はローカル クラスを見つけることができました。Windows デスクトップ用の Visual Studio 2012 Express... BR、

ダニエル

于 2015-08-03T10:15:23.370 に答える
2

これは、CustomControl のデフォルト スタイルを に記述していない場合にも発生する可能性がありますgeneric.xaml。generic.xaml で次のようなものが生成されます。

<Style TargetType="{x:Type local:MyCustomControl}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:MyCustomControl}">
                <Border Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

このコードを見つけて、変更または削除できます。

于 2014-05-03T10:40:14.140 に答える
1

アセンブリがProjectNameと呼ばれ、ターゲット名前空間ProjectNameと呼ばれると仮定します

以下を変更する必要があります。

xmlns:local="clr-namespace:ProjectName">

xmlns:local="clr-namespace:ProjectName;assembly=ProjectName">
于 2013-09-19T01:14:42.237 に答える
0

再構築とクリーニングを数回行うと、問題が解決しました。

于 2015-07-09T07:45:45.357 に答える
0

CustomControl1 にエラーがないことを確認し、名前空間を確認してください。

于 2012-09-24T17:10:17.957 に答える