カスタムコントロールライブラリの動的リソースのデフォルト値を保存する方法はありますか?WPFのデフォルトDynamicRessource値
カスタムコントロールライブラリを作成したので、Generic.xamlファイルにある既定のスタイルを使用します。この「デフォルトスタイル」では、動的リソースマーカーへの参照が使用されます(この例を参照)。
<Style TargetType="{x:Type local:BorderlessWindow}">
<Setter Property="Foreground" Value="{DynamicResource ForegroundColor}" />
<Setter Property="Background" Value="{DynamicResource BackgroundColor}" />
<Setter Property="TitleBackground" Value="{DynamicResource AltBackgroundColor}" />
<Setter Property="Template" Value="{StaticResource DefaultBoderlessWindowTemplate}" />
</Style>
すべてが、私は新しいプロジェクトで私のカスタムコントロールライブラリへの参照と、この新しいプロジェクトで動的なリソースマーカーを追加app.xamlが、私はこれを行わない場合の値が空の場合は正常に機能しています。
だから、何らかの種類のデフォルト値が必要です。言い換えれば、
"{DynamicResource ForegroundColor}の値をとるか、またはこれが青色でない場合。"
私は、Generic.xaml(MergedDictionary)にデフォルト値を追加するだけだと思っていましたが、これはジョブを実行しません。誰にも解決策がありますか?
私が考えることができる唯一の解決策は、dynamicResourceマーカーをコンクリート(デフォルト)値(たとえば青、緑、黒)に置き換えて、「消費」アプリでリソースを処理することです。
リソースビジュアルツリーに従います。したがって、コントロールにリソースがある場合はそれが使用されているリソースです。リソースが存在しない場合は、リソースのツリーをさらに上にします。あなたのリソースが存在しない場合は、デフォルトとして使用されます。 – MikeT
誰かがそれらをやっていない場合、それらのステップ(参照を追加し、何らかの形でリソース辞書を追加する)が必要です。これらをライブラリのドキュメント(readme.txt)に追加することはできますが、それだけで必要なことはすべてあります。実際にヒントを与える必要がある場合は、 'DynamicResource'の代わりにカスタム' MarkupExtension'を作成することができます。ここで、xamlがロード/解析されたときのリソースの可用性をチェックします。残念ながら、私はすぐに時間がありません今日このアプローチをテストしてください。 – Sinatr
こんにちは、あなたの返信ありがとうございます。私はSinatrのような何らかのドキュメンテーションでそれを解決すると思います。 ファイルについて、DefaultApp.xamlと呼ぶことができると思います。すべてのデフォルトのDynamicResourcesをこれに入れます。また、Buildpathに公開して、誰もがこのファイルを使用し、必要なリソースを確認できるようにします。 – Bado