3

次の設定があります。

メインアプリケーションは、IPlugin実装を使用してXAPをロードします。プラグインには、他のコントロールとともに参照されるコントロールを含む「DisplayPanel」が含まれています。ここでのDisplayPanelは、参照されているコントロールを表示するための単なるコンテナコントロールです。

アセンブリからこの参照されたコントロールは、このアセンブリでResourceDictionaryxamlのスタイルを使用します。少なくともそれが私が望んでいることです。問題は、参照されているコントロールがエラーをスローすることです。

名前/キーPlayerPanelGradのリソースが見つかりません[行:1500位置:127]

マージされたリソースディクショナリリファレンスを介してResourceDictionaryを参照することにより、このスタイルを取得しようとしました。

       <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="TableControls;component/ControlsStyle.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

しかし、それはうまくいきません。

これをどのように承認しますか?

4

4 に答える 4

1

私がそれを機能させる唯一の方法は、InitializeComponent 呼び出しの前にプログラムでリソース ディクショナリをコントロール (クラス ライブラリ内) にロードすることです。

public ActionPanel()
{
     StreamResourceInfo sr = Application.GetResourceStream(
          new Uri("TableControls;component/ControlsStyle.xaml", UriKind.Relative));
     Application.Current.Resources.Add("plop",sr.Stream);
     // Required to initialize variables
     InitializeComponent();
}
于 2010-07-07T22:10:27.670 に答える
0

この質問は役に立つかもしれませんが、正直なところ、私はまだ自分で理解しようとしています: MEF を使用して WPF DataTemplate をインポートしますか?

于 2010-11-04T19:44:16.953 に答える
0

今後の参考のために、私の XAML ファイルは、/文字を必要とするソリューションのサブディレクトリで見つかりましたが、ファイルはその中に名前が付けられたサブディレクトリにもAssetsありました。

<ResourceDictionary 
     Source="/MyAssemblyName;component/Assets/RadResources.xaml" />

また、.XAML ファイルはPageソリューションのようにビルドされました。

于 2015-08-14T19:54:12.927 に答える
0

//まず other.dll を動的にロードしてから、次のコードを使用します。

       StreamResourceInfo srf = Application.GetResourceStream(new Uri("otherdll;component/Resources/Brush.xaml", UriKind.Relative));

        StreamReader sr = new StreamReader(srf.Stream);
        string stt = sr.ReadToEnd();
        ResourceDictionary dict = XamlReader.Load(stt) as ResourceDictionary;
        Application.Current.Resources.MergedDictionaries.Add(dict);
于 2011-05-04T02:01:20.323 に答える