質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
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

1回答

2704閲覧

共有プロジェクトのwpfユーザコントロールでボタンの画像が表示されない

退会済みユーザー

退会済みユーザー

総合スコア0

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グッド

1クリップ

投稿2021/11/01 03:10

拡張機能を開発しており,共有プロジェクトを用いて2022へ対応させようとしています.
参考にしたMicrosoftドキュメント1
参考にしたMicrosoftドキュメント2
Microsoftのドキュメントを参考に共有プロジェクトにソースコードを映し,動作を確認したのですが,共有プロジェクト内のユーザーコントロールのボタンに設定した画像が表示されません.
プレビューでは表示されます.同じく共有プロジェクト内にあるResourcesフォルダ内の画像を確認してみたところ,ビルドアクションがコンテンツでした.そこでリソースに変更してみると,プロジェクトから勝手に画像が除外されます.(ビルドアクションをリソースにした瞬間ソリューションエクスプローラーから消える.)この状態ではプロパティすら表示されず,実行してもボタンの画像は表示されません.(xamlのプレビューでは表示されます.)
イメージ説明
また,プロジェクトをアンロードして.shprojを確認してみたところ,以下のような記述になっていました.

<ItemGroup> <Resource Remove="$(MSBuildThisFileDirectory)Resources\DeleteFolder.png" /> <Resource Remove="$(MSBuildThisFileDirectory)Resources\GlyphDown.png" /> <Resource Remove="$(MSBuildThisFileDirectory)Resources\GlyphUp.png" /> </ItemGroup>

この記述を以下のように書き換えてはみたのですがやはり実行時には表示されません.

<ItemGroup> <Resource Include="$(MSBuildThisFileDirectory)Resources\DeleteFolder.png" /> <Resource Include="$(MSBuildThisFileDirectory)Resources\GlyphDown.png" /> <Resource Include="$(MSBuildThisFileDirectory)Resources\GlyphUp.png" /> </ItemGroup>

どのようにすれば共有プロジェクト内のwpfユーザーコントロールで画像が正しく表示されるようになりますか.

hihijiji👍を押しています

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

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

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

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

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

guest

回答1

0

偶然同じ症状になった人の回答を期待しているんでしょうか?
「WPFのUserControl内で画像表示を使用した拡張機能を、共有プロジェクトで2022両対応しようとしている人」って日本中で何人いるんですかね?(全部当てはまる人って居ても数人レベルな気が)

私もしょうもない拡張機能を作ってますが、2022両対応はめんどくさそうで専用で作り直しました^^;

そうでないならあまりに情報不足だと思います。

  • UserControl内じゃなくって直置きなら出るんですか?
  • 2019のほうなら出るんですか?
  • 画像はどのプロジェクトにどう追加されているんですか?
  • 使う側のxamlはどうなっていますか?
  • そもそも実行はできているんですか?

何か前提になるコードがないと話が通じにくいので、↓をベースに検証してみました。
VSSDK-Extensibility-Samples/AsyncToolWindow at master · microsoft/VSSDK-Extensibility-Samples

Resources/Icon128x128.pngを、ツールウィンドウに出すだけです(本来はアイコン用だが面倒なのでそのまま画面用に使うためビルドアクションをResourceに変更)

xml

1<UserControl 2 x:Class="AsyncToolWindowSample.ToolWindows.SampleToolWindowControl" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:local="clr-namespace:AsyncToolWindowSample.ToolWindows"> 6 <StackPanel> 7 <TextBlock Text="ImageをToolWindowPaneに直置き" /> 8 <Image 9 Width="64" 10 Height="64" 11 Source="../Resources/Icon128x128.png" /> 12 13 <TextBlock Text="ImageをUserControlの中に" /> 14 <local:UserControl1 /> 15 16 <Button 17 HorizontalAlignment="Center" 18 VerticalAlignment="Center" 19 Click="Button_Click" 20 Content="Click me" /> 21 </StackPanel> 22</UserControl>

xml

1<UserControl 2 x:Class="AsyncToolWindowSample.ToolWindows.UserControl1" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 5 <Grid> 6 <Image 7 Width="64" 8 Height="64" 9 Source="../Resources/Icon128x128.png" /> 10 </Grid> 11</UserControl>

こちらに沿って慎重に作業しました。
Visual Studio の拡張機能を更新する - Visual Studio (Windows) | Microsoft Docs

ポイントはxamlで使う画像は共有プロジェクトでも共有ディレクトリでもなく、それぞれのVSIXプロジェクトに直接置くことだと思います(そうしないとvoid_nullさん同様、ビルドアクションをResourceにできなかったです)

アプリ画像

はっきり言ってビルド通すことのほうが大変でした。
UserControlでだけ出ないとなると、相対パスが間違っているとかそんなんじゃないですかね?

投稿2021/11/03 11:19

編集2023/07/29 07:46
TN8001

総合スコア9862

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問