問題タブ [staticresource]
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.
wpf - プロパティが StaticResource のカスタム ボタン
私は次のことを達成しようとしています: カスタム ボタンに svg 画像を使用します。
これを行うために、カスタム ボタンを作成しました。
svg ファイルを取り、inkscape で開き、xaml ファイルとして保存しました。
Themes.xaml を開き、作成した xaml イメージを ControlTemplate として追加しました
ボタンのスタイルは次のとおりです。
ご覧のとおり、 StaticResource 名をハードコードしました<ContentControl x:Name="Img" Template="{StaticResource Home}" />
このテンプレートのプロパティ Image を使用してバインドできるようにしたいのですが、次のようなものです。
ボタンの Image プロパティを必要な StaticResource の名前で設定できるようにします。
たとえば、「ホーム」画像の横に別の「戻る」画像があると、次のように MainWindow に 2 つのボタンが宣言されます。
どんなアドバイスも親切に受け入れられます。お時間をいただきありがとうございます。
wpf - WPF バインディングに静的文字列を割り当てるこの XAML を圧縮します
私がやりたいことの実用的な使用はないかもしれませんが、私の好奇心を満たすために、次の XAML の 2 番目のバインディングを 1 行に圧縮できますか?
StaticResource One は「1」を返し、MyConverter は取得したすべての値を連結するだけです。私が探しているのは、2 番目のバインディングを 1 番目のバインディングのようなコンパクトな形式で表現する方法です。
silverlight - VisualState で Silverlight リソースを変更する
異なる VisualState 間でコントロールのある種の共有リソース (つまり、ブラシ) を変更する簡単な方法があるかどうか疑問に思っています。たとえば、Brush を定義して、Border の Background と別の Rectangle の Fill の両方として使用したいと考えています。別の VisualState で、この背景ブラシを 1 か所 (リソース) で変更し、リソースを使用するすべての要素に反映させたいと考えています。
VisualState の Storyboard の TargetName の名前 (キーではなく) でリソースを参照できるかどうかはわかりません。
XAML でやろうとしていることの簡単な例を次に示します。
これらはSilverlightのStaticResourcesであるため、一度しかロードされず、変更できないと感じています。私は、WPF に DynamicResources の概念があることを知っています。すべての要素でブラシを再定義することなく、Silverlight でこの種の動作を実現する方法はありますか?
wpf - 現在のコンポーネント リソースから静的リソースを参照する方法は?
ここに問題のデモンストレーションがあります:
シンプルなウィンドウから:
ResourceDictionary のリソースにアクセスしようとしています:
Visual Studio 2010 ではウィンドウに期待される結果が表示されますが、アプリケーションを実行すると次の例外が発生します。
注 1 : DynamicResource を使用すると、結果は VS 2010 および実行時に問題ありません。
注 2 : リソース ディクショナリへの参照を TextBlock の外側、たとえば Windows リソースに配置すると、期待どおりの結果が得られますが、実際のシナリオではそれが許可されません。
それで、私は何を間違っていて、期待される結果を得るにはどうすればよいですか?
ANSWER : さらにテストを行った結果、XAML パーサーは非常に最小限であり、何も解釈しようとせずにコンテンツを順次解析しているように見えます。したがって、宣言の順序は重要です。辞書への参照の後に「テキスト」プロパティへの参照を配置する必要があります。そして、それを行う唯一の方法は、「Binding」要素で StaticResource への参照をラップするようです。
前もって感謝します。
c# - WPFで、別のXAMLファイルで定義されている静的リソースを参照するにはどうすればよいですか?
WPFで、別のXAMLファイルで定義されている静的リソースを参照するにはどうすればよいですか?同じプロジェクトにあります。
wpf - XAML のシステム型をリソースとして使用する
XAML で浮動小数点値を直接指定し、それをいくつかの UI ピースのリソースとして使用すると非常に便利な状況に遭遇しました。いろいろと調べてみると、適切なアセンブリ (mscorlib) を XAML に含める方法について、かなりの量の情報が見つかりました。
残念ながら、これを行おうとすると例外が発生します。状況を再現する次の XAML を次に示します。
これをコンパイルして実行しようとすると、「'120' はプロパティ 'Width' の有効な値ではありません」という XamlParseException がスローされます。
しかし、「Width」プロパティはdouble なので、定義された StaticResource を使用して設定できないのはなぜですか? 誰もこれを行う方法を知っていますか?
wpf - 「DynamicResource」を「StaticResource」に置き換えます
私のアプリケーションを実現するために、私は多くのBlend3を使用しました。Blend3がリソースを別のリソースにリンクする場合、リンクタイプ「DynamicResource」を何度も使用します。私が理解したように(しかし、よく理解できなかったかもしれませんが)、「動的」リンクは、実行時にリンクを変更したい場合にのみ意味があります。他の場合では、彼らは無駄により多くのメモリを使用します。実行時に何も変更したくない場合、質問は次のとおりです。すべてのアプリケーションで「DynamicResource」を「StaticResource」に置き換える意味がありますか?ありがとうございました!ピレッギ
c# - 外部アセンブリからの静的リソースでユーザー コントロールを使用する
それは非常に単純に聞こえ、私を殺しています!
外部アセンブリの ResourceDictionary からのスタイルで 1 つのユーザー コントロールを使用しようとしていますが、実行時に例外が発生します。
再現方法は次のとおりです。
- MyControls.dll という Silverlight クラス ライブラリを作成します。
SuperControl という名前のユーザー コントロールを作成します。
/li>Styles.xaml ResourceDictionary を作成し、以下を追加します。
SL という Silverlight アプリケーションを作成し、参照として Mycontrols を追加します。
MainPage.xaml グリッドで、次を追加します。
/li>コンパイルされますが、アプリケーションを実行すると、「プロパティ 'System.Windows.ResourceDictionary.Source' への割り当てに失敗しました。[行: 10 位置: 36]」が表示されます。
これをアプリケーションの App.xaml に追加しました
/li>同じエラー... :(
何かご意見は?
wpf - マージされた辞書で共有される静的リソース
現在、アプリケーションに動的に適用できるスタイルとテンプレートの辞書の作成に取り組んでいます。この「新しく必要な」動的動作の前に、App.xamlにマージした、スタイル付きコントロールごとに1つずつ、いくつかのリソースディクショナリがありました。
ここで、アプリケーションのスタイルを設定したいので、以前のすべてのリソースを「MyFirstTemplates」という新しいリソースにマージし、この辞書のみをApp.xamlに追加することにしました。
新しい辞書「MyFirstTemplates.xaml」:
新しいApp.xaml:
注:ウィンドウの既定のスタイルは、WPF 4のバグを修正することです。「マージされたディクショナリを、マージされたディクショナリに追加する」を参照してください。
この変更を行ったため、「ColorsDictionary.xaml」のカラーリソースを「ControlsTemplateDictionary.xaml」のStaticResourceとして使用できなくなりました。これらのファイルをapp.xamlにマージするように戻すと、すべてが機能します。それを機能させるには、 DynamicResourceのこれらのStaticResourceを変更する必要があります。なぜこれが機能しなくなったのか分かりますか?
ありがとうございました :-)
wpf - 実行時に解決されないDataTemplatesの論理リソースへのWPF静的リソース参照
.net3.5から.net4へのステップアップで、システムの目標に反しているように見えるバグのある動作が見られるため、何かを見逃したことがありますか。
いくつかの例を使用して、作業用に単純なMVVMライブラリを作成しようとしています。私はいくつかの追加学習のためにTwitterクライアントアプリケーション内でそれを消費していて、大きな障害にぶつかりました。
シナリオはこれです。ルートViewModel(TwitterClientViewModel)オブジェクトには、表示用のDialogViewModelオブジェクトのインスタンスが与えられます。DialogViewModelがコレクションに追加され、boolHasDialogsがtrueに設定されます。PropertyChangedイベントは、必要に応じてコレクションとフラグに対して呼び出されます。この部分は見事に機能します。
TwitterClientViewModelのビューはTwitterClientTemplateと呼ばれ、VisibleをDialogViewTemplate(DialogViewModelのビュー)ホスティングのオーバーレイにします。ホスティングContentControlのテンプレートは、DynamicResource拡張機能を持つDialogViewTemplateを参照します。これは、デザイナーと実行時に優れた表示をします。
これは物事が奇妙になるところです。DialogViewTemplateの「本体」は、DialogViewModel.Content(タイプオブジェクト)にバインドされた追加のコンテンツコントロールを備えたダイアログコンテンツをホストします。TemplateSelector(私は素晴らしい宣言型のものを書きましたが、テスト目的でコメントアウトしました)を使用して、テキスト要素とインタラクティブ要素の両方を表示できることを期待していました。たとえば、Twitterアカウントを認証するときにユーザーに詳細を要求します。この場合、PIN番号。
この時点で、ダイアログ実装用に2つのネストされたコンテンツコントロールがあります。テストの目的で、DialogViewTemplateの本体のcontentcontrolは、staticresource拡張機能を使用してEnterPINDialogTemplate(EnterPINDialogViewModelのビュー)を取得します。EnterPINDialogTemplateとDialogViewTemplateはどちらも同じファイルにあります(前者はもちろん最初に定義されます)が、元々は別々でした。
実行時に、staticresource拡張機能はメッセージとともにXamlParseExceptionをスローします。'System.Windows.Markup.StaticResourceHolder'に値を指定すると例外がスローされました。
および内部例外メッセージ。
'EnterPINDialogTemplate'という名前のリソースが見つかりません。リソース名では大文字と小文字が区別されます」
dynamicresourceを使用すると、nullが返され、コンテンツコントロールにEnterPINDialogViewModelタイプのフルネームが表示されます。これは、リソースが解決されていない場合に予想されます。FrameWorkElement.FindResource()を呼び出すときにカスタムTemplateSelectorに侵入すると、同様の例外がスローされます(TryFindResourceはnullを返します)。
私が最初に考えたのは、データテンプレートが構築されるときに論理ツリーが分割されることであり、以前のプロジェクトでその領域の問題を思い出しました。ResourceDictionaryのMergeDictionariesプロパティを使用して、DataTemplate内からリソースディクショナリを使用できるようにしようとしましたが、デザイナーはその1ビットが気に入らなかったため、エラーについては次のように説明します: http ://connect.microsoft.com/VisualStudio/feedback/details / 498844 /wpf-designer-throws-invalidcastexception
そのアイデアをスクラッチします。アプリケーション、ウィンドウ、TwitterClientTemplateレベルで辞書をマージしようとしましたが、うまくいきませんでした。
以下はxamlファイルです。
DialogTemplates.xaml
TwitterClientDataTemplate.xaml
私のstackoverflowを助けてください、あなたは私の唯一の希望です!
編集:この問題についてさらに作業を行いました。両方のテンプレートが同じファイルにある場合、dynamicresourceおよびstaticresource拡張機能は両方とも問題なくリソースを解決します。それらが別々のファイルにある場合、辞書をマージする方法に関係なく、リソースは解決されません。各拡張子はnullを返します。
明らかに、解決策は両方のリソースを同じディクショナリにスローすることですが、私に関する限り、これはハックであり、論理リソースルックアップシステムの意図された動作ではありません。私は今、幸せなバニーではありません。これはかなり文書化されていないようです...