Silverlight 4 - 在运行时从资源字典中检索纯色画笔?

时间:2011-10-26 21:36:48

标签: c# silverlight silverlight-4.0 resourcedictionary

我正在尝试从C#中检索资源字典(Styles.xaml)中预定义的纯色画笔。

问题是当我运行以下代码时没有任何反应:

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);
}

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

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

的类实例的资源

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

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

以下是一篇关于此主题的博客文章,其中包含示例代码:

答案 1 :(得分:3)

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