2011-12-30 5 views
1

XAMLでは、{StaticResource somename}は、コントロールリソースからウィンドウリソース、そして最後にアプリケーションリソースに渡ります。同じフォームのコードでは、Resources["somename"]はウィンドウリソース上でのみ動作するように見えます。C#でリソースを解決する

ウィンドウのコードビハインドで、アプリケーションレベルで定義されているリソースを解決するには、明示的にApp.Current.Resourcesを参照する必要があることがわかりました。

私は何かを間違って使用していますか?これは予期された動作ですか?

答えて

0

Resources Overviewをお勧めします。

XAMLでStaticResourceマークアップ拡張子を使用すると、 "somename"リソースを検索して論理ツリーに移動します。あなたはFrameworkElement.FindResourceを使用してコードで同じことを行うことができます(またはTryFindResource)メソッド:ある

 myButton.Background = (Brush)this.FindResource("RainbowBrush"); 

あなたがsomeFrameworkElement.Resourcesを使用し、[「somenameの」]、あなたが直接アクセスしているそのフレームワーク要素のリソースディクショナリ、通常の辞書やハッシュテーブルオブジェクトにアクセスすることと変わりはありません。論理ツリーをスキャンするスマートはありません。

+0

私はFrameElement.FindResource()について読んでいますが、読んでいる間に時間がかかりすぎて、私が忘れてしまったことが思い出されます。 –

関連する問題