3

我试图了解自定义 LightSwitch 应用程序的外观和感觉的最简化方式是什么。

我已经构建了几个 WPF 和 Silverlight 应用程序,并且有一组通用的画笔、样式、故事板、图像等,作为资源存储在一个专用的类库中。我没有任何自己的用户控件——只有样式、画笔、模板等,使它们看起来是自定义的。

我选择在 LightSwitch 中构建我的下一个应用程序,我希望保持与现有 WPF 和 Silverlight 应用程序相同的外观和感觉。因此,我想重新利用我现有的资源。

我探索了可扩展性工具包,并能够访问 LS 中使用的一些资源,例如画笔,但没有找到样式和模板的位置。

问题 #1:我在哪里可以合并我自己的资源字典以插入我自己的样式和模板?例如,如果我有一个按钮的隐式样式,我在哪里合并它?

在使用工具包的主题方法时,据我了解,需要执行以下操作才能看到应用于 LightSwitch 应用程序的修改:
a)构建主题项目
b)如果以前安装过则卸载扩展
C)重新启动 Visual Studio
d)重新安装更新的主题扩展
e) 重新启动 Visual Studio
f) 加载 LightSwitch 解决方案并运行它

我错过了什么吗?我看到的一种解决方法是创建一个常规 Silverlight 项目并使用我自己的资源库。一旦我对特定资源的外观感到满意并希望在 LightSwitch 中看到它,我会将其合并到主题中并执行上述痛苦的过程。

问题 #2:如何快速更改主题并查看它的实际效果?

请问,我错过了什么?我可能会遗漏一些东西,因为这不可能那么复杂,因为它在 SL 和 WPF 中很容易。我想要做的就是在我的 LS 应用程序的某个地方合并我的资源字典并运行它以查看它们的运行情况。请帮忙!:)

4

1 回答 1

1

对于 Q1 来说,仅仅合并一个资源字典是不够的,你需要使用实现一个鲜为人知的名为 IThemeExtension 的接口,并用 ThemeExtension 属性装饰类。没有太多关于它的文章,但是一旦你得到了这个不幸的名字(如果它被称为 StyleExtension 或 ControlStyleExtension 之类的东西,它可能不会那么混乱,但它的名字来自于它是一个扩展的事实到一个主题,以附加控件样式的形式),它非常简单。

IThemeExtension 接口只有一个方法可以实现,GetControlStyleResources,它必须返回一个 IEnumerable(Of Uri)。其目的是公开一个或多个 URI 值,每个值都指向包含控件样式定义的 ResourceDictionary(存储在 XAML 文件中)。

斜体文字引自我与 Tim Leung 合着的一本书,名为“Pro Visual Studio LightSwitch 2011 Development”,将于 2 月底出版。

如果您下载 Metro 主题的源代码,您将看到 Microsoft 如何使用该主题来更改控件样式以及更改画笔颜色。(http://code.msdn.microsoft.com/LightSwitch-Metro-Theme-b1bfce24)

对于第二季度,当我创建主题时,为了测试它,我使用以下步骤。

  1. 构建项目
  2. 在输出窗口中单击指向 VSIX 的链接
  3. 按照向导安装主题扩展
  4. 打开一个 LS 项目(如果是没有使用过主题的项目,需要在项目的属性中勾选“在这个项目中使用”复选框,如果还没有选择过主题,则需要选中它也适用于该项目)。
  5. 运行 LS 项目

步骤 4 中的额外部分只需要为尚未选择主题的项目完成。完成后,顺序非常简单。绝对不需要卸载/重新安装您的扩展程序。只需确保每次要测试它时都增加版本号(从 1.0 到 1.0.1 等),并且扩展程序将升级之前安装的自身版本。

我希望这一切都有帮助。

于 2011-12-29T03:48:13.433 回答