モデル、ビューモデル、およびビューを持つac#wpfベースのクラスライブラリがあります。これは、APIを持つデスクトップアプリケーションの複数のアドインで使用しています。ホストされたドッキング可能なWPFユーザーコントロールをサポートします。ここからは、さまざまなコントロールとダイアログを起動して、サードパーティアプリケーションのさまざまなデータ構造とやりとりすることができます。私のクラスライブラリにはApp.xamlファイルがありません。参照アドインからクラスライブラリスタイルのリソース値を指定または変更する
私は自分の見解を通してメインスタイルシートとして使用しているResourceDictionary xamlファイルを作成しました。私のユーザーコントロールとウィンドウでは、私はそれを参照:このスタイルシートの内部
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="../Resources/styleMain.xaml"/>
</ResourceDictionary.MergedDictionaries
を、私は自分の意見を簡素化し、統一するために私の様々な制御を管理します。一番下のレベルでは、フォントサイズ、フォントファミリ、色などの設定があります。たとえば、私は自分のコントロール全体でいくつかのブラシを使用しています。 1つはこのように見えます:
<Color x:Key="ColorBase_Primary" R="255" G="0" B="115" A="255"/>
<SolidColorBrush x:Key="Color_Primary" Color="{StaticResource ColorBase_Primary}"/>
これはすべて設計とテストに役立ちます。しかし、私は他の複数のプロジェクトでこのクラスライブラリを参照しています。これらの他のプロジェクトでは、私は私のクラスライブラリからメインユーザーコントロールをホストしています:アドインアプリケーション何の問題もなく私のクラスライブラリを参照するから
ここ<UserControl x:Class="MyAppHost.ucDockingHost"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:MyAppHost"
xmlns:viewModels="clr-namespace:MyClassLibrary.ViewModels;assembly=MyClassLibrary"
xmlns:views="clr-namespace:MyClassLibrary.Views;assembly=MyClassLibrary"
mc:Ignorable="d">
<UserControl.DataContext>
<viewModels:vmMain/>
</UserControl.DataContext>
<Grid>
<views:ucMainGrid ViewModelMain="{Binding}" Property1="SomeValue" Property2="SomeOtherValue"/>
</Grid>
</UserControl>
私は設定していますDependencyPropertiesを、そして私のすべてのバインディングとコントロールの振る舞いはうまくいっています。
現在、私のスタイルシート全体で使用されている基本的なリソース値を、アドイン(メインクラスライブラリではなく)から指定することができます。値はx:Key="ColorBase_Primary"
に関連付けられています)。このように、さまざまな実装をさまざまなクライアントのブランディングに適応させることができます。私は長い時間、あらゆる例や見識を探し続けてきました。
アプリケーションごとにクラスライブラリ全体を個別に配備し、スタイルシートを直接調整するのは簡単ですが、そうは思わないでしょう。私のクラスライブラリで指定されたリソース値を供給、変更、および/または上書きできる、アドインアプリケーションでResourceDictionaryを作成する方法はありますか?または、ビューモデルでDependencyPropertyを使用して行う必要がありますか?それも正しいとは思わない。
私はあなたの質問を理解するとは思わない。特定のアプリケーションで参照されているクラスライブラリで定義されている一部のリソースをオーバーライドするか、問題は何ですか? – mm8
あなたは私の質問を理解しています。クラスライブラリの他のアプリケーションを参照したいと思います。これらのアプリケーションでは、いくつかのリソースをオーバーライドすることができます。 – davestasiuk