0

私は現在、WPF リソースを把握しており、あなたが私を助けることができるかどうか疑問に思っています:

独自のリソースを含む WPF ウィンドウがあります。また、ツリー ビューでの選択内容に応じてコンテンツを変更するコンテンツ コントロールも含まれています。

contentControl1.Content = someUserControl;

SomeUserControlこれは、たとえば、ウィンドウ xaml で定義した静的リソースを使用するUserControl にすることができます。

ウィンドウ コード ビハインドでのインスタンスを作成するとSomeUserControl、XMLParseException ('Provide value on 'System.Windows.StaticResourceExtension' throw an exception.') が発生します。これは、静的リソースへのバインディングを含む行にあります。

これを解決するために、これを SomeUserControl のコンストラクターに追加しました (parentResources は someUserControl がインスタンス化されるウィンドウのリソースです):

public SomeUserControl(ResourceDictionary parentResources)
{
    this.Resources.MergedDictionaries.Add(parentResources);
    InitializeComponent();
}

これは、この特定のケースでリソースを見つけるための最良のアプローチですか? 助けてくれてありがとう。

4

2 に答える 2

1

実際には、話しているリソースによって異なります。

あなたのやり方はかなりうまくいくかもしれませんが、唯一の欠点は、宣言型プログラミングから切り離すことです。これは、WPF でのコーディング方法として期待されています。

StaticResourceたとえば App.xaml に を追加することもできます。これにより、アプリが起動するとすぐに初期化されてロードされ、何らかの方法でウィンドウがロードされる前にロードされます。

お役に立てれば。

于 2012-04-19T13:25:06.127 に答える