2011-10-26 27 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

是'Resources [“HoverColorBrush”]'null'? – Gabe

回答

3

所以答案是Application.Current.Resources["ResourceName"] as SolidColorBrush!谁会知道Resources对象指向页面的资源字典? UGHHH

4

语法Resources["HoverColorBrush"]查找存储在当前对象的资源中的资源。在这种情况下,包含方法LinkContinue_MouseEnter的类实例的资源。

如果您想使用相同的查找机制,{StaticResource HoverColorBrush}会用,你需要使用FindResource方法代替:

但是,因为幸运的是,Silverlight那样不支持FindResource,因此您需要直接在Styles.xaml中定义的ResourceDictionary中查找资源,或者滚动您自己的FindResource

这里是关于该主题的博客文章示例代码: