4

私は WPF が初めてで、別のアセンブリにあるスタイルを使用するのに苦労しています。これは私がやっていることです:-

\Themes 内のサブフォルダーから多数の xaml ファイルをマージする「generic.xaml」を含む \Themes フォルダーを含むクラス ライブラリ プロジェクトがあります。

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Metro\CoreStyles.xaml" />
        ... etc ...
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

私のソリューションには WPF アプリケーション プロジェクトもあり、ここで App.xaml は次のように私のライブラリ プロジェクトのリソースにマージされます。

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/MyThemeLibrary;component/Themes/generic.xaml"/>    
        ... etc...            

ここまでの定番品。

最後に、3 番目のプロジェクト、WPF ユーザー コントロール ライブラリがあります。これらのコントロールは、通常、これらの一般的なスタイルを使用し"Style={StaticResource SomeStyle}"ます。アプリを実行でき、問題ないように見えますが、問題は、ユーザー コントロールを作成するときにデザイン時のサポートを受けられないことです。デザイン サーフェイスは基本的に空です。

別の SO 記事では、App.xaml をユーザー コントロール ライブラリ プロジェクトに追加し、上記のようにリソースをマージすることを提案しました。これは機能し、設計時のサポートを受けますが、ソリューションをビルドしようとするとエラーが発生します。

Library project file cannot specify ApplicationDefinition element.  

他の場所で提案されているように、App.xaml ビルド アクションを「ApplicationDefinition」から「Page」に変更しようとしました。これでビルドは機能しますが、ユーザー コントロールがスタイルを認識できなくなるため、デザイン時のサポートが失われます。

この問題を回避する方法、またはこれに失敗する方法、別のアセンブリのスタイルを使用する別の方法はありますか?

前もって感謝します

アンドリュー

4

1 に答える 1

0

エラーメッセージはそれを言います。ライブラリプロジェクトでは「pack://application...」構文を使用できません。これは、wpfプロジェクトで行う必要があります。

于 2012-05-29T10:52:59.770 に答える