【问题标题】:Silverlight 4 - Retrieve a solid color brush from Resource Dictionary at runtime?Silverlight 4 - 在运行时从资源字典中检索纯色画笔?
【发布时间】:2011-10-26 21:36:47
【问题描述】:

我正在尝试从 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);
}

有什么想法吗?

【问题讨论】:

  • 您是否检查过铸造成功返回 solicColorBrush?还是可能抛出了异常?
  • Resources["HoverColorBrush"] null 吗?

标签: c# silverlight silverlight-4.0 resourcedictionary


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 2011-04-28
      相关资源
      最近更新 更多