問題タブ [pack-uri]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
58048 参照

wpf - リソースから BitmapImage を取得するにはどうすればよいですか?

私のアセンブリには、BuildAction==Resource のイメージが含まれています。この埋め込みリソースから BitmapImage を取得したいと考えています。

次のように、ファイルから BitmapImage をロードできます。

しかし、埋め込まれたリソース イメージを参照する Uri を作成するにはどうすればよいでしょうか。

「 pack URI」(pack://application:,,,/MyImage.pngまたはなど)を作成しようとするとpack://application:,,,/MyAssembly;component/MyImage.png、例外がスローされます:

System.UriFormatException 「無効な URI: コロン (':') が存在するため、ポートが予期されましたが、ポートを解析できませんでした。」

このブログ投稿の UriFormatException に対する修正を見つけました

ただし、その修正を適用しても、パック URI から BitmapImage を読み込もうとすると例外が発生します。

形式を使用するpack://application:,,,/Image.pngと NullReferenceException が発生し、pack://application:,,,/AssemblyName;component/Image.png形式を使用すると NotSupportedException 「Uri プレフィックスが認識されません」が発生します。


まとめ 私の問題は、WPF コントロール/ウィンドウ/etc がインスタンス化される前にプロセスで「パック URI」を使用しようとしていたため、「パック」URI スキームがまだ登録されていなかったことです (他の WPF に必要な「スタッフ」もパックスキームを手動で登録しても問題は解決しないため、設定しないでください)。解決策は、WPF ユーザーコントロールをインスタンス化してパック URI を使用するまで待つことでした。

0 投票する
3 に答える
11414 参照

wpf - WPF リソースが別のプロジェクトで定義されている場合の Visual Studio デザイナー エラーの回避

WPF リソースが別のプロジェクトで定義されている場合、Visual Studio デザイナー エラーを回避するにはどうすればよいですか?

複合 WPF アプリケーションには、メイン アプリケーション、「インフラストラクチャ」ライブラリ、および「モジュール」ライブラリの 3 つのプロジェクトがあります。メイン アプリケーションは、出力 DLL を介して他のプロジェクトを参照します (プロジェクトは 1 つのソリューションに一緒に配置されません)。

ResourceDictionary「インフラストラクチャ」ライブラリでスキン (のいくつかのブラシとスタイル) を定義しています。メイン アプリケーションでスキンを選択し、アプリケーション全体MergedDictionariesで (App.xaml を介して) 使用できるようにしたいと考えています。

私のモジュールでは、メイン アプリケーションがロードするスキンで定義されたリソースを使用したいと考えています。次のようにローカルで利用可能であるかのようにリソースを参照すると、次のようになります。

ほとんどすべてが希望どおりに機能します。例外は、Visual Studio のデザイナーが混乱し、「StaticResource 参照 'MainBackgroundBrush' が見つかりませんでした」と通知することです。これにより、デザイナーを使用できなくなります。

ResourceDictionaryプロジェクトで「スキン」を定義し、メイン アプリケーションでそのスキンを参照し、モジュール プロジェクトでそのリソースを使用するにはどうすればよいですか?

0 投票する
3 に答える
18716 参照

wpf - WPFで画像を解決しないURIとパスをパックする

次のディレクトリ構造があります

コントロールには、次の XAML で定義されたボタンがあります。

ただし、このパック URI メソッドも "/images/view.png" も機能していません。私が理解しているように、これはこの質問が提起するのと同じ問題です。ただし、同じエラーが発生します。紛らわしいのは、Visual Studio 2008 のデザイナーでは、画像が正しくレンダリングされることですが、InitializeComponent() 呼び出しの呼び出しで次のようになります。

属性 'Source' の文字列 'pack://application:,,,/images/view.png' をタイプ 'System.Windows.Media.ImageSource' のオブジェクトに変換できません。リソース 'images/view.png' が見つかりません。マークアップ ファイル 'RecapSpecEditControl;component/modaltreadgroupdatadialog.xaml' 行 61 位置 40 のオブジェクト 'System.Windows.Controls.ControlTemplate' でエラーが発生しました。

宣言しなければならない名前空間があるのではないかと思いましたが、msdn サイトによると、そのようなことをする必要はないと考えています。

0 投票する
1 に答える
7514 参照

wpf - URIに基づいて、WPFリソースが存在するかどうかを検出します

pack:// URIが与えられた場合、コンパイルされたリソース(たとえば、「Resource」のビルドアクションでコンパイルされたPNGイメージ)が実際にそのURIに存在するかどうかを判断する最良の方法は何ですか?

いくつかつまずいた後、私はこのコードを思いつきました。これは機能しますが、不器用です。

( Application.GetResourcesのドキュメントが間違っていることに注意してください。リソースが見つからない場合は、ドキュメントの状態が正しくないようにnullを返すのではなく、例外がスローされます。) (ドキュメントは修正されています。以下のコメントを参照してください)

期待される(例外ではない)結果を検出するために例外をキャッチするのは好きではありません。また、実際にストリームをロードするのではなく、ストリームが存在するかどうかを知りたいだけです。

おそらく低レベルのリソースAPIを使用して、これを行うためのより良い方法はありますか?理想的には、実際にストリームをロードせず、例外をキャッチしませんか?

0 投票する
2 に答える
794 参照

wpf - Prism v4、MEF、WPF-モジュールグラフィックに適切なURIを使用

私のソリューションの構造は次のとおりです。

ここに画像の説明を入力してください

CI.Frontier.ClassicにはMEFモジュールが含まれています。私のアプリケーションはRibbonWindowコントロールを使用しており、モジュールは作成するメニュー項目を定義します。CI.Frontier.Classicモジュールからリボンコントロールにボタンを正常に追加できますが、ClassicFrontierToopTip.pngへの適切なURIがわかりません。

タブ、ボタンを作成し、リボンToolTipImageを設定しようとするFrontierClassic.csのコードを次に示します。

ツールチップが表示されないため、このURIは機能しません。UriKind.Relativeを使用できますか、それともある種の「パックURI」を使用する必要がありますか?

0 投票する
4 に答える
5116 参照

wpf - 設計時にはパック uri は有効ですが、実行時には有効ではありませんか?

ボタンのコンテンツを画像に設定しています。次のようになります。

私のプロジェクトには、NavigationImages という名前のサブフォルダーがあり、そのフォルダー内に画像ファイル nav_up_left.png があります。

Designer を表示すると画像が表示されますが、実行時にリソースが見つからないという IOException エラーが発生します。

Build Action は Resource に設定されています。

実際、これは 1 つのプロジェクトでうまくいきました。しかし、別のプロジェクトにコピーすると失敗します。これは信じられないほど単純な問題のように思えますが、私は困惑し、髪を引き抜く準備ができていることに気付きました. @_@

あなたの考えや提案は大歓迎です!

0 投票する
4 に答える
8665 参照

c# - WPF では、コード ビハインドでリソース ライブラリのフォントを参照するにはどうすればよいですか?

リソース用に個別のライブラリ アセンブリを使用するアプリケーションがあり (ただし、コードのないリソースのみのアセンブリではありません)、ライブラリにカスタム フォントを含めたいと考えています。

プロパティをOpen Type Fontビルド アクション = 'リソース' および Copy to Output = 'Do Not Copy'、次のコードを使用:

ただし、フォントをリソース ライブラリ プロジェクトに追加しようとすると、フォントが読み込まれません。次のコードを使用してロードしようとしました (これも注意: パック URI の経験があまりありません)。

ライブラリは、画像などの他のリソースに対しても機能します。

また、URI の他の順列を試してみましたが、成功しませんでした (例外はスローされず、デフォルトのフォントで表示されるだけで、これが別の問題であるかどうかはわかりません)。

MSDN のPackaging Fonts with Applicationsから作業してきました。これには、フォント リソース ライブラリを作成する例がありますが、コード ビハインドを使用した例はありません (これにはコード ビハインドを使用せざるを得ません)。

私が何をする必要があるかについてのアイデアはありますか?私は軌道に乗っていませんか?

0 投票する
1 に答える
415 参照

c# - pack://siteoforigin を使用してディレクトリを上に移動する

こんにちは、を使用してフォルダ ツリーをファイルに移動しようとしていますsiteoforigin。サブフォルダーにアクセスできますが、1 つ上に移動するにはどうすればよいですか?

これが私が試したコードです

しかし、うまくいきません。

0 投票する
1 に答える
457 参照

silverlight-5.0 - Silverlight での別のアセンブリからのリソースのマージ

ResourceDictionary1 という名前のリソース ディクショナリを Silverlight プロジェクトに追加しました。

また、OtherAssembly という名前のプロジェクトに Silverlight クラス ライブラリを追加し、次に、この新しいアセンブリに ResourceDictionary2 という名前の新しいリソース ディクショナリを追加しました。

プロジェクトの構造

元のプロジェクトでは、両方の辞書を MainPage.xaml にマージしようとしています。

プロジェクトを実行すると、OtherAssembly を含む行で例外がスローされ、その行でプロパティ System.Windows.ResourceDictionary.Source を割り当てるときにエラーが発生したことが示されます。

エラー

しかし、設計時には、デザイナーはすべてを順番に表示し、すべてのリソースを見つけます。

わかりません。Pack Uri 構文が適切に形成されていないようです。

このエラーメッセージが表示される理由を知っている人はいますか?

0 投票する
1 に答える
169 参照

.net - ユーザーディレクトリ内のファイルを参照するためのWPFパックURI

wpf pack uriを使用して、ユーザーディレクトリにあるファイルを参照するにはどうすればよいですか。私のアプリケーションはユーザーディレクトリにフォルダを作成し、ファイルはインターネットからダウンロードされます。これは、パックuriを介してwpfにロードする必要がありました。

ありがとう