🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

4回答

1532閲覧

他プロジェクトのResources.resxに登録された画像へのURIパス

tride

総合スコア68

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2019/11/19 00:03

初歩的なことだとは思うのですが、他プロジェクトのResources.resxファイルに登録されたイメージを、xamlからアクセスするにはどうすればいいかが分かりません。

<Resources.resx>
アクセス修飾子:public

<ソリューション構成>
AppResources
┃---┗Properties
┃------┗Resources.resx(Button_Normal_jpa.pngが登録されている)

┗AppWPF
-----┗MainWindow.xaml

<MainWindow.xaml>

xaml

1<BitmapImage x:Key="ImageSource_Normal" UriSource="pack://application:,,,/AppResources;component/Properties/Button_Normal_jpa.png" /> 2
退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takabosoft

2019/11/19 00:51

何をやりたいのかわからないのですが、 他プロジェクトとやらはWinFormsアプリですかね? そこからButton_Normal_jpa.pngをエクスポートして自分のプロジェクトに組み込んだほうが早くないですか?
tride

2019/11/19 02:50 編集

xamlですのでwpfのカスタムコントロールになります。
guest

回答4

0

ImageSource クラス (System.Windows.Media) | Microsoft Docs

ImageSource を継承し、resx から画像を取得するクラスを作ってください。探せばありそうな気もします。

c# - How to use Resources.resx to link images - Stack Overflow

ここにはコンバータを使う方法が書かれています。ベストアンサーではなく、もっと下の方です。

wpf – resxファイルに埋め込まれた画像へのパックURI - コードログ

こちらにはスキームを実装する方法が書いてあります。

投稿2019/11/19 00:27

Zuishin

総合スコア28669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tride

2019/11/19 02:54

思いのほか、面倒な内容になってますね。 内容を見てみたいと思います。
Zuishin

2019/11/19 02:58

resx を使わないのが一番だと思います。
tride

2019/11/20 01:27

コンバーターを使う方法で試してみようと思いますが、その前にresxを使わない方法も検討したいと思います。
guest

0

ベストアンサー

先の質問者さんのスレッド(URL 下記)で回答していますが、それではダメだったのですか?

xaml上で別プロジェクトのPropertiesにあるResources.resx内の文字列リソースにアクセスするには
https://teratail.com/questions/222835

先のスレッドでは文字列でしたが、それが画像に変わっただけと理解していますが・・・

投稿2019/11/19 00:46

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tride

2019/11/19 02:49

当初はそう考え、先で教えていただいたpublic/internalを踏まえた上で、 <TextBlock Text="{x:Static properties:Resources.HelloWorld}" /> の{}の部分を以下のようにしました。 <Image Source="{x:Static properties:Resources.Button_Normal}"/> しかし、以下エラーが出たため、何かやり方が違うのかなと調べているところであります。 XDG0012 メンバー "Button_Nomal" が認識されないか、アクセスできません。
退会済みユーザー

退会済みユーザー

2019/11/19 04:49

今回の場合リソースファイルから取得するのは Bitmap オブジェクトになるのですよね? そうであれば、Image.Source プロパティには Bitmap を直接設定することはできませんので、リソースファイルから取得した Bitmap オブジェクトを BitmapImage とか BitmapFrame に変換する必要があります。 なので、例え自動生成された Resources コンストラクタのアクセス修飾子 internal を public に書き換えても、先のスレッドの文字列の場合の文字列のようなわけにはいきません。(何か自分が知らない手段があるのかもしれませんが・・・) コード (MainWindow.xaml.cs) 上で行えば Bitmap から BitmapImage とか BitmapFrame への変換は問題なく可能です。 UI (MainWindow.xaml) で直接設定するのは諦めて、コードで設定してはいかがですか? そもそも自動生成された Resources.Designer.cs のコードを書き換えるという無理筋な話は止めた方が良いと思いますし。
退会済みユーザー

退会済みユーザー

2019/11/19 05:57 編集

上の私のコメントで、 > 何か自分が知らない手段があるのかもしれませんが・・・ と書きましたが、Zuishin さんが紹介された記事の中のコンバーターを使う方法がありますね。 でも、やはり、そもそも自動生成された Resources.Designer.cs のコードを書き換えるというのは無理筋な話なので止めた方が良いと思います。
退会済みユーザー

退会済みユーザー

2019/11/19 22:02

マイナス評価を付けた人、理由を書こう
tride

2019/11/20 00:26

間違えてマイナス評価をつけたのかと焦りましたが、他の方のようですね。
退会済みユーザー

退会済みユーザー

2019/11/20 00:51

それは了解しました。でも、上の私のコメントに対するフィードバック(役に立った・立たなかった、立たなかったなら何が不足か)を書いていただくようお願いします。
tride

2019/11/20 01:27

書いたつもりでいました。 コンバーターを使う方法で試してみようと思いますが、その前にそもそもresxを使わない方法も検討したいと思います。
退会済みユーザー

退会済みユーザー

2019/11/20 01:33

先のコメントで聞いた、 > UI (MainWindow.xaml) で直接設定するのは諦めて、コードで設定してはいかがですか? そもそも自動生成された Resources.Designer.cs のコードを書き換えるという無理筋な話は止めた方が良いと思いますし。 ・・・に対してはいかがですか? どうしても UI (.xaml) で行いたい理由があれば教えてください。
tride

2019/11/20 01:39

できる限りデザインに関わる部分はxaml上に収めたいというのと、画像が大量にあると、画像の枚数分だけコードが増えて、とても不快だなというのが正直なところな為、xamlで行いたいなと。
退会済みユーザー

退会済みユーザー

2019/11/20 01:46

.resx に、例えば今回のように画像を追加したりすると、public に書き換えたところが元の internal に戻ってしまうと思いますが、そこは認識してますか?
退会済みユーザー

退会済みユーザー

2019/11/20 02:00

方針変更はかまいませんが、であれば方針変更ということを書いてこのスレッドはクローズしていただくようお願いします。
Zuishin

2019/11/21 01:16 編集

この回答がベストアンサーになっていますが、ベストアンサーの理由と事実の間に齟齬があります。建前ではなく本当の理由を書いてください。
Zuishin

2019/11/21 01:29

> なので、今は以下サイトの3つ目にあるようなresxを使わない方法で試し中です。 そもそもその方法ってこれですよね? https://teratail.com/questions/222319 追記・修正依頼で私が答えてるじゃないですか。 > 埋め込まれたリソースならこんな風に取得できます。 > https://smdn.jp/programming/netfx/embeddedresource/ この質問のこの時点で解決してるはずのものでしょう? 違いますか?
Zuishin

2019/11/21 01:35

この回答に低評価したのは私ではなく、低評価の分打ち消すために高評価していますが、ベストアンサーの理由とこの回答が繋がらないので中立に戻します。
tride

2019/11/22 02:17

低評価打消しに関しては、せめて高評価をつけようとしたら意図せずマイナスになってしまったので、慌てて戻しただけでした。 評価機能に慣れていなかったのが単純な原因です。
guest

0

プログラムによる .resx ファイルの使用

リソースファイルからデータを取得する方法がかいてありますね

投稿2019/11/19 00:17

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tride

2019/11/19 02:59

今回の件はxamlとなりますが、内容は有用そうなので読ませていただきます。
guest

0

回答にありますコンバータを用いての対応にしようと思いますが、その前に以下サイトにあるようなresxを使わない方法も検討したいと思います。

https://tocsworld.wordpress.com/2014/08/13/%E5%A4%9A%E8%A8%80%E8%AA%9E%E5%AF%BE%E5%BF%9Cc%E3%80%81wpf%E7%B7%A8/

投稿2019/11/20 02:10

tride

総合スコア68

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/11/20 02:12

それ、私の回答じゃありませんでしたっけ?
tride

2019/11/20 02:24

申し訳ございません。 非常に悩ましかったのですが、コンバータの件の前に、SuferOnmWwwさんの回答からresxを使わない内容で試そうと思いましたので、このような形になりました。
Zuishin

2019/11/20 02:25

それも私です。
Zuishin

2019/11/20 23:22

返事をお願いします。
tride

2019/11/22 01:41

返事が1日遅れたこと、ご迷惑をおかけします。 >追記・修正依頼で私が答えてるじゃないですか。 すいませんが、その回答はいただいていないと思うのですが、どこですか? 記事内容も見た覚えがなかったので、確認漏れだったら申し訳ないんですが。 resxを使わない回答に関してはSurferOnWwwさんの >そもそも自動生成された Resources.Designer.cs のコードを書き換えるという無理筋な話は止めた方が良いと思いますし。 という回答のほうが早く、かつZuishinさんの >resx を使わないのが一番だと思います。 の回答のほうが後だったので、SurferOnWwwを先と判断しました。 また、その後にSuferOnWwwさんからの回答でresxの自動書き込みに関する注意をいただいたことが、最終的な方針転換になりましたので、ベストアンサーをSuferOnWwwさんにした次第です。
Zuishin

2019/11/22 01:52 編集

>そもそも自動生成された Resources.Designer.cs のコードを書き換えるという無理筋な話は止めた方が良いと思いますし。 これは resx を使わないという話ではありません。resx を使う場合もここは書き換えません。 昨日、通知が入っているのに無視して他の回答で書いていたのは知っていますし、他の質問の件もあるので、言い訳はもう結構です。
tride

2019/11/22 02:04

21日は別回答も別質問もしておりません。 また言い訳は結構ということでしたら、そのままスルーをお願いします。 ベストアンサーに関しては、本当にどちらがいいか悩ましかっただけですので、ご不快になられたことにはお詫びいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問