2011-10-26 3 views
0

C#からリソース辞書(Styles.xaml)であらかじめ定義されたソリッドカラーブラシを取得しようとしています。しかしSilverlight 4 - 実行時にリソースディクショナリからソリッドカラーブラシを取得しますか?

private void LinkContinue_MouseEnter(object sender, MouseEventArgs e) 
{ 
    this.LinkContinue.Background = (SolidColorBrush)Resources["HoverColorBrush"]; 
} 

私はコード内の背景を設定した場合、明示的にそれがうまく実行されます:

private void LinkContinue_MouseLeave(object sender, MouseEventArgs e) 
{ 
    this.LinkContinue.Background = new SolidColorBrush(Colors.Gray); 
} 

任意のアイデア

問題は、私は実行時に以下のコード何も起こらないということですか?

+1

キャスティングがsolicColorBrushを正常に返したことを確認しましたか? 例外がスローされた可能性がありますか? – MichaelS

+1

'リソース[" HoverColorBrush "]は' 'ヌルですか? – Gabe

答えて

3

だから、答えはApplication.Current.Resources["ResourceName"] as SolidColorBrushでした!リソースオブジェクトがページのリソースディクショナリを指していることは誰が知っていたでしょうか? UGHHH

4

構文Resources["HoverColorBrush"]は、リソースの現在のオブジェクトに格納されているリソースをルックアップします。この場合、メソッドLinkContinue_MouseEnterを含むクラスのインスタンスのリソース。

あなたは{StaticResource HoverColorBrush}が使用するのと同じルックアップメカニズムを使用する場合は、代わりにFindResourceメソッドを使用する必要があります。

しかし、運がそれを持っていると同じように、SilverlightはありませんFindResourceをサポートしていないので、ResourceDictionaryで定義されたリソースを直接Styles.xamlにルックアップするか、独自のFindResourceをロールバックする必要があります。ここで

は、サンプルコードでこのトピックに関するブログ記事です:

関連する問題