【问题标题】:Silverlight 4: change themes/styles for whole app without using ToolkitSilverlight 4:在不使用 Toolkit 的情况下更改整个应用程序的主题/样式
【发布时间】:2010-09-27 19:41:01
【问题描述】:

我们正在着手进行我们的第一个 Silverlight 项目,该项目来自 WPF。这是一个相对简单的门户网站,鉴于我们使用 WPF 工具包的经验,我们希望避免提及 Silverlight 工具包。

我不是一个编码员,有几个与主题相关的问题:

  • 隐式样式使这更容易。很明显,您可以切换资源字典来更改主题。如何在不依赖工具包的情况下做到这一点?

  • 如何将样式应用到整个应用程序,就像在 WPF 中一样,而不是将内容包装在主题容器中?我看到您可以使用 ApplicationThemeURI,但这需要工具包。

谢谢。

【问题讨论】:

    标签: silverlight themes resourcedictionary


    【解决方案1】:

    在silverlight 4中将样式应用于整个应用程序是一项简单的任务。将此代码放入App.xaml或themes/generic.xaml中:

    <!-- Sample style for each button in the application -->
    <Style TargetType="Button">
    </Style>
    

    这篇文章可以帮助你: http://www.silverlightshow.net/items/Implicit-Styles-in-Silverlight-4.aspx

    您可以通过这种方式更改资源字典:

    var dict = Application.Current.Resources.MergedDictionaries.FirstOrDefault(rd => rd.Source == new Uri("Dictionary1.xaml", UriKind.Relative));
    if (dict != null)
         dict.Source = new Uri("Dictionary2.xaml", UriKind.Relative);
    

    【讨论】:

    • 是的,从我们以前的经验中可以很好地理解这一点。我想第一个问题更重要——我们如何在应用运行时切换资源字典?
    • 另外,您可以删除和添加资源字典而不是更改源。
    • 这会更新正在运行的 silverlight 应用程序吗?我正在修改您的示例以及我在网上找到的其他一些示例,但样式没有改变。
    【解决方案2】:

    只是关于 Siverlight 工具包的注释。上次我使用 WPF Toolkit 时(这是不久前),我的印象是它或多或少是可选的。我不会说 Silverlight Toolkit 也是如此。它添加了许多您自己难以实现的重要功能,虽然它不是没有错误的,但它非常可靠。我不能保证它的每一个方面,但我们在一个大型 Silverlight 项目(约 30K 行代码)中广泛使用它,我们发现它不可或缺。除非您知道您的项目会遇到的具体问题,否则我建议您重新考虑不使用它的决定。

    【讨论】:

    • 那部分不取决于我,这最终是好的。我们并没有因为没有它而瘫痪,一些团队成员发现任何类型的依赖诅咒。该网站非常简单,我完全不明白我们为什么要使用 Silverlight。
    猜你喜欢
    • 2015-08-21
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多