2012-04-19 9 views
0

私は現在、WPFリソースとグリップを取得し、あなたが私を助けることができる場合は思ったんだけどを得ていません。また、ツリービューで選択された内容に応じてコンテンツを変更するコンテンツコントロールも含まれています。例:WPF ContentControlにコンテンツが親リソース

contentControl1.Content = someUserControl; 

これはUserControlなどです。 SomeUserControl私はウィンドウxamlで定義した静的リソースを使用します。

ウィンドウコードの後ろにSomeUserControlのインスタンスを作成すると、XMLParseException( 'System.Windows.StaticResourceExtension'の値を指定すると例外がスローされました)が表示されます。これは静的リソースへのバインディングを含む行にあります。

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

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

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

答えて

1

あなたは{StaticResource myResource}とします。 {DynamicResource myResource}を試しましたか?

は、参照してくださいhttp://msdn.microsoft.com/en-us/library/ms748942.aspx

EDITあなたはリソースが動的なリソースを使用することはできませんコンバータ、でていることを考えると、

[OK]を、私は何をやっていることは良いAとして、おそらくだと思います任意のソリューションを使用できます。

基本的な問題は、コントロールがインスタンス化される瞬間に、ウィンドウの一部ではなく、ウィンドウのリソースへのアクセス権がないことです。また、StaticResourceの静的という用語が意味するように、コントロールはリソースが利用可能になると予想しています。したがって、コントロールがインスタンス化されたときに使用可能にする必要があります。

また、Prismのようなものを見ることもできます。地域によっては、必要に応じて「コントロール」をスワップアウトするより良い方法かもしれません。

+0

こんにちは、ありがとうございました:いいえ、これは助けになりません、代わりに私は取得: 'DynamicResourceExtension'は 'バインディング'タイプの 'コンバータ'プロパティで設定することはできません。 「DynamicResourceExtension」は、DependencyObjectのDependencyPropertyでのみ設定できます。 - 私は現在、私が書いたコンバータにバインドしています – Jeb

1

これは実際にあなたが話しているリソースによって異なります。

なぜなら、あなたはそれがかなり難しいかもしれないという欠点しかないので、宣言的なプログラミングではなく、と期待されています。WPFのコーディング方法はです。

また、App.xamlで、たとえば、StaticResourceを追加することができますので、に初期化され、アプリが始まるとすぐにロードされ、どのような方法で、ウィンドウ負荷。

これが役に立ちます。

+0

あなたの助けに感謝します。私は書いたコンバータにバインドしています。残念ながら、私はApp.xamlに追加することはできません。私はwinformsでWPFフォームをホストしています。回避策がありますが(http://stackoverflow.com/questions/3799515/adding-a-static-resourceced-to-usercontrols-before-the-xaml-is-parsed)、私はアプリケーションとしてトップレベルウィンドウのリソースを使用しています.xamlに相当し、潜在的にリソースを共有できる他のwpfフォームを表示しません。 – Jeb

+0

極端な条件(WinFormsでのホスティング)の種類は、あなたが今やっていることに何の問題も見られないことを考えると、そうです。 – Tigran

関連する問題