3

アプリケーション アセンブリで定義された WPF ユーザー コントロールがあります。別の (スキンまたはテーマ) アセンブリのスタイルに基づいてユーザー コントロールのスタイルを設定しようとしています。すべてのスタイルを含む resourcedictionary を含むテーマ/スキン アセンブリでアプリケーション アセンブリを参照したくありません。これを行う方法はありますか?例えば

WPFApplication アセンブリ

MyUserControl.xaml <- WPF ユーザー コントロール

テーマの組み立て

MyStyles.xaml <- WPF リソース ディクショナリ

使えると思います

<Style x:Key="MyStyle">
    <Setter Property="Background" Value="Red" />
</Style>

MyStyles.xaml リソース辞書で、次を使用します。

<l:MyUserControl Name="control" Style="{StaticResource MyStyle}" />

WPFApplication アセンブリで MyUserControl.xaml を使用する任意のウィンドウで

ただし、MyStyles.xaml resourcedictionary のカスタム ユーザー コントロールをターゲットにすることをお勧めします。

<Style TargetType="{x:Type l:MyUserControl}" x:Key="MyStyle">
        <Setter Property="Background" Value="Red" />
    </Style>

これは可能ですか??

4

1 に答える 1

1

はい、できます。プログラムでそれを行う方法を示すこのSO投稿を確認してください。ControlTemplates でやっていましたが、まったく同じことが Styles にも当てはまります。

宣言的に行う方が簡単な場合があります。リソースディクショナリをプログラムでマージし、xaml で適切な StaticResources と名前空間を宣言してから、必要なスタイル/テンプレートを参照するだけです。

于 2010-01-14T12:31:21.343 に答える