Lightswitch - 如何重用现有资源?

时间:2011-08-24 00:33:17

标签: xaml resources visual-studio-lightswitch

我试图了解哪种是最简化的自定义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应用程序中的某处合并我的资源字典并运行它以查看它们的运行情况。请帮忙! :)

1 个答案:

答案 0 :(得分:1)

对于Q1,仅仅合并资源字典是不够的,您需要使用一个名为IThemeExtension的鲜为人知的接口,并使用ThemeExtension属性来装饰该类。关于它的描述并不多,但是一旦你得到了不幸的名字(如果它被称为类似StyleExtension或ControlStyleExtension,它可能会更加混乱,但它的名字来自于这样的事实:它是主题的扩展,以其他控件样式的形式),它非常简单。

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

斜体文字引自我与Tim Leung一起写的一本书,名为“Pro Visual Studio LighSwitch 2011 Development”,将于2月底发布。

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

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

  1. 构建项目
  2. 点击输出窗口中VSIX的链接
  3. 按照向导安装主题扩展程序
  4. 打开一个LS项目(如果它是一个没有使用过主题的项目,你需要勾选项目属性中的“在这个项目中使用”复选框,&如果主题尚未被选中,你需要为项目选择它。)
  5. 运行LS项目
  6. 步骤4中的额外位只需要为尚未选择主题的项目完成。完成后,序列非常简单。绝对不需要卸载/重新安装您的扩展程序。只要确保每次要测试时都增加版本号(从1.0到1.0.1等),&扩展程序将升级以前安装的版本。

    我希望这一切都有所帮助。