web-dev-qa-db-ja.com

WPF-イメージは「プロジェクトの一部ではないか、そのビルドアクションがリソースに設定されていません」

ウィンドウに画像が必要なプロジェクトがあります。これは静的な画像で、[追加]> [既存のアイテム]で追加しました。プロジェクトのルートに存在します。

私はそのようにテストページで画像を参照します-

<Page x:Class="Critter.Pages.Test"
      xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
      Title="Test">
      <Image Source="bug.png"/>
</Page>

問題は、それが見つからない、またはビルドアクションがリソースではないというメッセージが表示されることですが、存在し、ビルドアクションISリソースです。新しいアプリケーションを作成し、ウィンドウ上でそれはそれからうまくいきます。

どんな助けでも素晴らしいでしょう。

31
Stimul8d

完全な再構築を実行するか、ビルドファイルを削除してからファイルをビルドしてください。

Visual Studioは常にリソースへの変更を取得するとは限らず、再コンパイルするのが面倒な場合があります。

また、同じ問題が発生したときに役立つ完全なURIを使用してみてください。何かのようなもの

pack://application:,,,/MyAssembly;component/bug.png
32

→イメージファイルを右クリック→プロパティをクリック→リソースへのビルドアクションを選択→ソリューションのクリーンアップとビルド→ソリューションの実行

あなたはすべてを取得します。

20
sona jha

同じ問題がありました。ソリューションのクリーニングと再構築では修正されなかったため、Visual Studioを再起動すると修正されました。 Visual 2010がこの問題を修正し、Visual 2008でwpfを悩ませている他の多くの問題が修正されることを期待しています。

16
brianstewey

「/」で画像のパスを開始してみてください:

<Image Source="/bug.png"/>
13
Ben Gribaudo

あなたの質問に対する解決策があります

<Image Source="/WpfApplication4;component/images/sky.jpg" />

「コンポーネント」はフォルダではありません!

4
towrywang

そうではない、または少なくとも現在のベータではそうではない。まったく同じ問題を調査しているときに、このページを見つけました。再構築/クリーンは何もしませんでした。ソリューションを終了してリロードした後、ファイルは魔法のように再び互換性を持つようになりました。

2
user188079

非同期ロードの例、別のオプション。例clip.mp4はWebプロジェクトのルートにあります。

void Landing_Loaded(object sender, RoutedEventArgs e)
{
    //Load video async

    Uri pageUri = HtmlPage.Document.DocumentUri;
    Uri videoUri = new UriBuilder(pageUri.Scheme, pageUri.Host, pageUri.Port, "clip.mp4").Uri;           

    WebClient webClient = new WebClient();
    webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
    webClient.OpenReadAsync(videoUri);
}

void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    byte[] VideoBuffer = new byte[e.Result.Length];
    e.Result.Read(VideoBuffer, 0, (int)e.Result.Length);
    MemoryStream videoStream = new MemoryStream(VideoBuffer);
    ContentVideo.SetSource(videoStream);
    ContentVideo.Stop();
    ContentVideo.Play();
}
1
pigleg

私はまったく同じ問題に直面しましたが、VS2008を再起動するか、プロジェクトをクリーンアップして再構築してもうまくいきませんでした。最後に、以下の手順でうまくいきました。

  • Windowsエクスプローラーで、イメージをプロジェクトリソースフォルダーにコピーします。例:MyProject\Resources \
  • Visual Studio内からリソースを右クリックし、[追加]> [既存のアイテム]を選択して、先ほどコピーした画像を選択します。
  • XAMLフォーム内から、画像ソースを次のように設定します:"Source="Resources/MyImage.ico"(私の画像はアイコン(.ico)ファイルとして保存されましたが、このアプローチはどの画像タイプでも機能するはずです。

これが誰かを助けることを願っています

1
P_Fitz

同様の問題がありました。ソリューションエクスプローラーから、実際には使用していないsomeStyle.xamlファイルを削除した後。その後、ファイルを復元しましたが、変更はありませんでした。プロジェクトのクリーニングと再構築は役に立ちませんでした。

対応する行を削除するだけです:

<ResourceDictionary Source="someStyle.xaml"/> 

トリックをしました。

0
JnuO

同じエラーメッセージが表示されましたが、私の問題は単純なNOOBミスでした。

.icoファイルを「My Project/Resources」に追加すると、VSはResourcesという名前のサブフォルダーを作成し、使用しようとしました。

<Window Icon="icons1.ico">

私が使用すべきだったとき;

<Window Icon="Resources/icons1.ico">

...判断しないでください、私は1週間前にWPFを使い始めました:)

0
T4roy