62

すべて、埋め込みブラケットの整合性について.resxファイルをチェックする小さなアプリケーションを次のように開始します(一致しない "... {0}"文字列の実行時エラーが発生しないようにします)。MainWindow.xaml用に次のXAMLがありますが、特定の問題はボタンに表示される画像に関連しています

<Window x:Class="ResxChecker.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="174.383" Width="495.869">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="350*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="30*"/>
        </Grid.RowDefinitions>
        <Label Content="Select .resx file:" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Top" Height="24" Width="Auto" Grid.ColumnSpan="1"/>
        <TextBox Grid.ColumnSpan="2" HorizontalAlignment="Stretch" Margin="10,0,0,0" Grid.Row="1" TextWrapping="Wrap" Text="" VerticalAlignment="Top"/>
        <Button Grid.Column="2" HorizontalAlignment="Right" Margin="5,0,10,0" Grid.Row="1">
            <Image VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="16 " Width="16" Source="pack://siteoforigin:,,,/Resources/UserCost2013Open16.png"/>
        </Button>
    </Grid>
</Window>

イメージには「ビルドアクション=リソース」、「出力ディレクトリにコピー=コピーしない」があります。イメージはデザイナに表示されますが、実行時には表示されません。次の質問を見て、関連する回答を読みましたが、問題を解決するものはありません。

  1. アプリケーションで使用したときにWPF制御イメージが表示されない

  2. wpfの画像の問題(画像が表示されない)

  3. ボタンの背景画像がWPFに表示されない

実行時にボタンの画像を表示するにはどうすればよいですか?

4

10 に答える 10

82

ビルドアクションを「リソース」に変更します。また、パックのURLが間違っています。次のいずれかを使用します。

Source="pack://application:,,,/Resource/UserCost2013Open16.png"

または単に

Source="/Resource/UserCost2013Open16.png"
于 2013-03-26T12:12:53.397 に答える
29

2つの解決策があります:

1:画像の設定を変更します:

Build Action = Content
Copy to output directory = Copy if newer
Source="pack://siteoforigin:,,,/Resources/UserCost2013Open16.png"


2:ソースパスでsiteoforiginの代わりにアプリケーションを使用する場合は、次の方法が考えられます。

a)画像は「リソース」と呼ばれるサブフォルダにあり、.exeファイルは小さくなります

Source="pack://application:,,,/Resources/UserCost2013Open16.png"
Build Action = Content
Copy to output directory = Copy if newer

b)画像は.exeに含まれ、画像ファイルを含むサブフォルダーは存在しません

Source="pack://application:,,,/Resources/UserCost2013Open16.png"
Build Action = Resource
Copy to output directory = Copy if newer
于 2013-03-26T12:18:02.910 に答える
11

あなたが持っていると仮定して

  • に設定Build ActionするResource

  • を使用してそのパスを正しく設定するURI-PACK-FORMAT

私の場合、それはまだ表示されていませんでした。

Clean & Rebuild ビルドだけで修正されたのではありません!

于 2016-06-13T11:13:44.677 に答える
8

私の場合、名前の付いた別のプロジェクトCommonに画像があり、画像はこのプロジェクトの名前の付いたフォルダーの下にありましたResources。他のプロジェクトでは、次Commonのように画像への参照を追加し、画像のソースを設定しました。

<Image Source="/Common;component/Resources/anImage.png"/>

画像にはとにBuild Action設定されResourceCopy to Output DirectoryDo not copyます。ただし、奇妙な理由で、ソリューション内のすべてのアセンブリファイルを削除し、とを作成するまで機能しませんでしClean SolutionBuild Solution。理由はわかりませんが、すべてを再構築すると、実行時にすべてが機能し始めました。それでも、なぜそれがデザインタイムで機能していたのか理解できません。

于 2014-04-23T04:36:39.493 に答える
6

リソースフォルダ内の画像に移動し、画像を右クリックしてプロパティに移動し、ビルドアクションプロパティをクリックして、[なし]から[リソース]に変更します。それはうまくいくでしょう。

于 2015-09-09T10:07:42.167 に答える
4

VisualStudioのソリューションエクスプローラー内に何かを追加する必要があります。Windowsエクスプローラーで画像をフォルダーにコピーする代わりに、ソリューションエクスプローラーで任意のフォルダーを右クリックし、[追加]> [既存のアイテム... ]に移動して、追加するリソースへのパスを選択します。

于 2015-08-01T08:27:59.067 に答える
3

私は自分の画像を次のように定義しました:

<Image Source="/Resources/Images/icon.png"/>

画像はVisualStudioDesignerに表示されますが、アプリを起動したときに画像が表示されません。それは私を狂わせた!私はすべてのビルドアクションをクリーン/ビルドで試しましたが、運がありませんでした。

私の場合、問題の原因は、コントロール(Imageを使用)とアプリ自体が異なるプロジェクトにあるという事実です。Resources/ImagesフォルダーはControlsプロジェクトにあります。その結果、アプリは独自のDebugフォルダーでicon.pngを見つけようとしましたが、実際にはControlsのDebugフォルダーにあります。

したがって、2つの解決策が私に役立ちます。

1)リソース/画像をアプリのプロジェクトに配置します(コントロールプロジェクトのコントロールを使用するプロジェクトがいくつかある場合はあまり良くありませんが、機能します)

2) Image内でControlsプロジェクトの名前を明示的に指定します。

<Image Source="/Controls;component/Resources/Images/icon.png"/>
于 2017-01-13T11:00:55.117 に答える
1

Visual Studio 2022(ただし、他のバージョンでも機能するはずです)。必要に応じて名前の付いたフォルダーに画像を追加します。この例では、Assets名前の付いたフォルダーを作成しました。次に、画像のプロパティをResourceに設定しBuild Actionます。次に、フォルダ内の画像を選択し、にドラッグアンドドロップする<MenuItem.Icon>と、適切にパスするはずです。

画像をプロジェクトにドロップし、リソースとして設定してからページにドロップします

  • プロジェクトを再構築する必要がある場合があることに注意してください。コンパイラは、新しいリソースを再構築の必要性として認識しない場合があります。
于 2021-11-05T22:09:27.507 に答える
0

新しいフォルダーを作成し、写真を新しいフォルダーに入れて、これをXAMLで書き込みます

<Image Source="/newfolder/icon.png"/>
于 2020-04-15T13:55:00.930 に答える
-6

Source = "file:/// D:/100x100.jpg"/>は私のために働きます。

于 2018-05-27T05:49:11.437 に答える