开始VS2013中LightSwitch系列的第三部分:我们该选择哪个屏幕模板?

[原文发表地址] Beginning LightSwitch in VS 2013 Part 3: Screen Templates, Which One Do I Choose? [原文发表时间] 11/4/2013 3:00 PM 说明:本文是之前很受欢迎的LightSwitch 博文系列之Visual Studio2013的更新. 若要查看以前版本,请点击下面: Visual Studio 2012: Part 3: Screen Templates, Which One Do I Choose? Visual Studio 2010: Part 3: Screen Templates, Which One Do I Choose? 欢迎来到开始Visual Studio 2013中 LightSwitch 系列的第3部分!在第 1 和第 2…

0

如何在你的LightSwitch应用程序中使用选择器作为过滤器

[原文发表地址] How to Use a Picker as a Filter in your LightSwitch apps [原文发表时间] 2013-08-29 07:17 AM 在过去的几个月中,关于如何做到基于选择器过滤数据的通用模式,我已经得到了不止几个问题。举例来说,我有一个客户表,我想从列表中选择,然后展开他们的详细资料。或者说,我有一个客户列表,我想看到所有的相关订单。 老实说,我以为我已经有一个博客文章是关于如何做到这一点- 但如果连我都不能找到它,那么你可能也无法找到!步骤很简单,你不需要写任何代码,这些步骤在这里… 在同一个表中过滤数据 比方说,我们有一个客户列表,在显示其余字段给用户之前,我们希望有一个屏幕显示,他们应在选择器中选择客户。下面是步骤: 1 – 创建一个查询,通过ID检索客户 在解决方案资源管理器的客户表中,右键单击“添加查询”,在这个例子中,我将它命名为CustomerByID。添加一个过滤器Where ID =,选择“参数”,然后选择“添加新的”去创建一个新的名为ID的查询参数。 需要注意的是,你可以选择参数并且设置这个参数在属性框中是否选择。如果你这样做,那么所有客户的详细资料都将显示在屏幕上。如果遗漏掉了所需的参数项,那么用户必须选择一个客户,去看该客户的详细资料。 2 – 使用查询去创建一个屏幕 无论您使用的是什么样的客户端(Silverlight或HTML)这里的技术是相似的,只是模板不同。在你的客户机节点上单击鼠标右键,并“添加新的屏幕”… 选择CustomerByID作为屏幕数据。如果你正在使用的HTML客户端,那么选择浏览模板。如果使用Silverlight客户端,那么随意挑选像搜索屏幕上的任何列表屏幕。 视图模型中选择CustomerID属性,并在属性窗口中,将其名称更改为客户。请注意您的视图模型会为您自动设置,顾客的属性会设置为一个真正的客户实体并且它的ID会数据绑定到CustomerByID查询的ID参数(如箭头为您指向您在视图模型中选择的Customer.Id项)。像在属性窗口中显示,CustomerByID查询也将会自动执行。这意味着所需的所有参数被输入时,这个查询将会执行,这样的话客户将被选中。 接下来是将客户控件从一个简单的模式选择器变成一个详细的模型选择器 如果你使用Silverlight客户端,那么这些已经被设置到一个自动完成框,但如果你喜欢,你也可以选择一个模态窗口选择器。 3 – 运行吧! 当屏幕出现时,在显示它们的细节之前,用户不得不选择一个客户。 HTML客户端: Silverlight客户端: 请注意,如果在系统中你有很多的潜在客户,我建议根据字段提供一个过滤器,并允许用户简单键入参数(如姓名,电话等),对于Silverlight客户端,您可以使用模态窗口选取器,而不是提供了一个自动搜索。请参阅: Filtering Lookup Lists with Large Amounts of Data on Data Entry…

0

主-详细信息屏幕与LightSwitch HTML客户端

[原文发表地址]  Master-Detail Screens with the LightSwitch HTML Client [原文发表时间]  2013-03-21 9:01 AM 自从几周前我们发布了最新版本的LightSwitch HTML Client,团队就已经在LightSwitch Team blog加了一些很好的关于新的功能以及怎么用的内容。并且还会有更多。 如果你是刚开始接触HTML客户端,参见:Getting Started with LightSwitch in Visual Studio 2012 Update 2 。 在这篇博文中我想给你展示如何用LightSwitch Screen Designer来创建你想要的主-详细信息屏幕。你只要稍加练习就可以用屏幕设计器非常灵活地自定义屏幕布局。事实上,屏幕设计器上有如此多的好东西我不会涵盖所有你可以做的(查找相关的视频很快)。相反我想将重点放在一些不同的你可以用来显示主-详细信息屏幕的方法上。是Heinrich在Designing for Multiple Form Factors 上的一篇精彩文章激发了我写这篇文章,那篇文章解释了LightSwith是如何承担起为你决定根据屏幕的尺寸来布局屏幕内容的最佳方法的重任的。 我将展示一些不同的可以设计主-详细信息屏幕的方法来实现你的创作梦想,但是记住这些只是建议。最后你可以完全灵活地用你脑海中的的数据和用户任意地创建屏幕。 安装我们的数据模块 我将准备用一个在Beginning LightSwitch Series上生成的应用程序并且扩展了它的移动客户端。它是一个用来管理联系人或者商业合作伙伴的非常简单的应用程序。这通常是一个大的业务系统的一部分,但是在这里作为例子它足够了,因为有多个一对多关系。Download the Sample App并且在家里随时跟着做。 下面是我们的数据模型。一个Contact与它的PhoneNumbers, EmailAddress, Addresses有着一对多的关系。 添加HTML客户端“Home”屏幕 首先我们需要升级这个应用程序以便充分利用新的HTML客户端,然后我们将可以添加一个用户运行这个程序时就可以看见的屏幕。 在Solution Explorer, 右键工程并选择“Add Client…”。 给客户端命名为“HTMLClient”并且单击OK键。这样将会使你的工程从LightSwith版本2升级到版本3。在Solution Explorer中你将会看到一个叫做“HTMLClient…

0

开始VS 2012中LightSwitch系列的第3部分:我该选择哪一个屏幕模板

[原文发表地址]  Beginning LightSwitch in VS 2012 Part 3: Screen Templates, Which One Do I Choose? [原文发表时间]  2012-08-15 18:02 说明:本文是将之前所编的Visual Studio LightSwitch 2011 博文更新到Visual Studio 2012 中的LightSwitch, 若要查看原文版本,请点击这里。 欢迎来到开始Visual Studio 2012中 LightSwitch 系列的第3部分!在第 1 和第 2 部分,我们学习了在LightSwitch中有关实体和关系以及如何使用数据设计器来定义它们。如果您错过了它们: 第 1 部分: 表中有什么?描述你的数据 第 2 部分: 感受关爱,定义数据关系 在这篇文章中,我想谈一谈屏幕。屏幕是日常生活中常用的术语,通常表示电视或电脑屏幕 — —我们观看并与设备进行交互的闪亮的东西。LightSwitch 屏幕向用户显示数据并形成大多数应用程序的用户界面 (UI)。取决于你正在使用的应用程序Shell,屏幕所显示的内容也会不同。Shell决定了应用程序的物理布局以及向用户展示的可视化元素。 在Visual Studio 2012 中的LightSwitch中,有两个shell, Standard shell…

0

使用屏幕的技巧: 滚动条和拆分器

[原文发表地址]  LightSwitch Screen Tips: Scrollbars and Splitters [原文发表时间]  2012-02-09 7:08 AM 很多时候在商务应用程序中,我们需要在屏幕上显示大量的信息,而且根据用户的屏幕分辨率,信息可在页面之外滚动。在这种情况下,Visual Studio LightSwitch屏幕模板添加了自动适用屏幕的垂直滚动条,但是,有时我们更愿意让用户调整屏幕部分大小以设置为他们认为合适的。在屏幕设计中使用拆分器来执行此操作是很常见的。拆分器是一种有用的用户界面功能,通过拆分器屏幕上控件的宽度或高度都可以被调整,以显示更多或更少的信息。在本文中,我将演示在LightSwitch中如何启用拆分器控件显示,以及控制滚动条的行为方式。 创建你的屏幕 首先创建一个屏幕来显示所有信息。在此示例中,我将使用我们在地址簿示例中创建的 ContactDetails 屏幕。这个例子中,联系人有很多地址、电话号码和电子邮件地址。默认情况下,LightSwitch 会将联系人字段放置于屏幕的顶部,三个数据网格的选项卡控件表示子级。 这里是屏幕的外观: 这里是屏幕的树形目录: LightSwitch 中的滚动条 想象一下,随着时间的推移,我们的联系人有越来越多的电子邮件地址、电话号码和/或地址。如果用户的屏幕分辨率很低 (或应用程序 shell 的大小没有最大化), 然后默认情况下LightSwitch 将在屏幕上放置一个垂直滚动条,(为清楚起见,我添加了绿色框;-)) 这是通过选择最上面的行布局来控制的,并且在外观属性中,你将看到"启用垂直滚动"被勾选了。注意,这儿也有"启用水平滚动"属性,必要时你可以使用它来启用水平滚动条。LightSwitch 中的所有组控件都具有这些属性 (即行布局,列布局,表布局) 但是,选中此选项意味着用户不能同时看到所有的电子邮件地址以及第一个和最后一个名称字段。在这儿我们可以做几件事。一个是我们可以禁用屏幕的垂直滚动。一旦我们这样做, LightSwitch 将自动放置滚动条到网格自身中。 但如果我们在字段列表下面没有使用数据网格(或列表控件)呢?或者,如果我们想让用户选择他们一次查看多少行呢?在这些情况下,使用拆分器可以允许用户调整信息窗格的大小。 添加水平拆分器 为了提供这种功能,我们可以在顶部的字段列表和下面的选项卡控件之间放置一个拆分器。在调试模式下运行应用程序时,单击界面右上角的"设计屏幕"以打开自定义模式。为联系人选择嵌套的行布局控件,这样在调整属性中,你将看到一个"可调整行"的复选框。 勾选它,然后单击保存按钮以保存你的变更。现在,你会看到一个拆分器控件,而且可以使用它来调整顶部和底部的窗格。 本例中你可能还想要设置行布局窗格的最小和最大高度,那样用户可以不必使用拆分器来完全关闭屏幕网格。现在如果你拖动拆分器离开屏幕,网格将完全消失。为了防止这种情况,你可以设置MinHeight 和 MaxHeight 属性。必要时你也可以通过勾选"启用垂直滚动"来在顶部窗格启用一个滚动条。 添加垂直拆分器 你还可以用类似的方式添加垂直拆分器。与其在单独的选项卡中显示数据网格,不如说我们想并排显示它们。再次打开定制模式并将布局选项卡更改为列布局。 然后选择每个数据网格,并在调整属性中,勾选"可调整列"。 现在你可以调整包含了数据网格的所有列的大小。数据网格会自动在底部放置一个水平滚动条,这样用户可以看到所有想要的字段。 另一个例子 当你有信息部分和/或你希望允许用户调整大小的命令时,拆分器和滚动条能真正帮助你。在这里我修改了Contoso 构建实例以允许调整左侧的命令选项卡控件和右侧的信息。 总结 你可以用 LightSwitch 屏幕设计器做很多的事情,从而提供完全自定义的布局。控制滚动条和添加拆分器只是获得你所想要的另一种方法。更多关于自定义屏幕的提示和窍门,请参阅: 使用屏幕设计器的提示和技巧…

0

基于记录类型来使用不同的编辑屏幕(表继承)

[原文发表地址]  Using Different Edit Screens Based on Record Types (Table Inheritance) [原文发表时间]  2012-01-20 2:59 PM 这周一位读者询问我怎样使用Visual Studio LightSwitch 来基于记录类型打开不同的编辑详细信息屏幕。这是一个很常见的问题,尤其对使用表继承(或子表)的数据模型来说。例如说我们正在构建一个应用程序,该程序是用于宠物商店管理库存动物的。我们需要在Animal表中收集所有动物的共有属性,但是我们也想设置一些表继承到鱼,猫和狗的表中,这些表存放这些动物的特有的属性。当用户在搜索屏幕中选择一个动物时,我们需要显示一个屏幕来让用户使用来自特定表的正确数据。LightSwitch提供一个 “显示为链接”的标签,它可以为该实体自动打开默认的详细信息屏幕,但是在我们的例子中,我们有多个屏幕。当处理LightSwitch中不同类型的关系时,你也需要了解其他的一些技术,特别是关于插入管道。在这篇文章中我会给你演示怎样可以实现这个功能。 创建数据模型 首先让我们从给宠物商店创建一个简单的继承数据模型开始。我们会创建一个保存商店中所有动物共有属性的Animal表。然后我们会创建关于猫,狗和鱼的表来保存这些动物类型的特有属性。Animal表和其他动物表的关系是“一对0或1”的关系。 在这个例子中,Animal表有两个必要的属性,名字和类型。类型是一个有“猫”,“狗”,“鱼”等静态值来对应于动物的选择列表。我们将使用该类型来控制哪些记录应被插入到特定的表中,我们也用它来决定显示哪个屏幕。 接下来,创建一个猫,狗和鱼的表来记录这些动物类型的特有属性。 最后,使用一个“级联删除”的删除行为,设置从Animal表到这些表的“1对0或1”的关系。 现在我们的数据模型看上去像这样。 创建屏幕 接下来我们需要在系统中输入一些新的动物。创建一个New Data屏幕,然后选择Animal作为屏幕数据。当你这样设置时,LightSwitch会在屏幕上显示所有的一对一关联表中的字段。然而,我们只要求用户在该屏幕上输入动物的一般属性,一旦他们保存了,我们会指导他们到正确的猫, 狗或鱼的详细信息屏幕。因此首先删除屏幕设计器的目录树中除名字和类型外的所有项。 接下来,创建一个编辑详细信息屏幕,再次选择Animal屏幕数据。将屏幕命名为CatDetail,然后取消选中“设置为默认详细信息屏幕”。 你会再次看到LightSwitch读取这些特定关系,并将四个表中的所有字段添加到屏幕上。我们需要做些修改。首先,将“类型”从自动完成框修改为标签(Label)。一旦用户在New Data屏幕上输入了动物类型,它就不能被修改了。接下来,从屏幕上删除所有与狗和鱼有关的所有字段。 重复上述步骤来创建DogDetail和FishDetail屏幕,从屏幕中移除不应显示的字段。 最后,添加一个Search Data屏幕,并再次选择Animal作为屏幕数据。选择“名字”内容项,然后在属性窗口中取消选中“显示为链接”。 与其使用内置的“显示为链接”功能,不如创建我们自己的命令行。我们可以在屏幕的任何地方输入命令行,然后将它们显示为按钮或链接。(想了解更多信息,请看:“我命令你!” – LightSwitch 屏幕命令提示和技巧)例如我们可以在屏幕命令条,网格命令条,甚至在行本身上放置一个编辑按钮。让我们向行本身中添加一个命令行。 右击目录树中的数据网格行命令条,选择“添加按钮…”。创建一个新的名为“Edit”的方法。 我们想要将命令行显示为链接而不是按钮,因此在内容目录上选择按钮,然后更改为链接。 编写代码 现在我们需要编写一些代码来将它们放在一起,右击刚才所创建的按钮,然后选择“编辑执行代码”来打开代码编辑器。这里我们要检查哪种动物类型需要打开相应的屏幕。 1: Private Sub Edit_Execute() 2: If Me.Animals.SelectedItem IsNot Nothing Then 3:…

0

如何创建级联下拉列表

[原文发表地址]   Creating Cascading Drop Down Lists in Visual Studio LightSwitch [原文发表时间]    2012-01-12 10:15 AM 在数据输入屏幕上常用的技术是使用一个"下拉列表"(在LightSwitch中称为自动完成框)作为下一步骤的筛选器。这限制了选择的数量,用户在指导下能更轻松地定位那些值。如果你已有一个级联筛选器的列表,第一个列表的选择可以在第二个列表中筛选数据,第二个列表的选择也在下一个列表中筛选数据,以此类推,这种情况下此时这个技术也很有用。LightSwitch通过使用参数化的查询和参数绑定可以轻易实现以上功能,在这篇文章中让我们来看看几种常见的情况。 基于多个表的级联列表 让我们看一个示例,这儿有一个关于国家的表以及它的子表城市表。当将客户输入系统时,城市是从客户表中选择出来的。因此我们在国家与城市以及城市与客户表之间存在一对多的关系。我们的数据模型如下所示: 当用户输入新的客户时,我们不希望在下拉列表中显示数千个城市。虽然用户可以使用自动完成框功能来查找一个城市,要读出并显示所有的城市也会影响性能。最好使用一个模式窗口选取器搜索对话框 (像我在这篇文章展示的),或者首先显示国家列表,然后基于该部分筛选城市列表。 首先,我们需要创建几个查询。第一个是简单地对国家列表进行排序,让它们在列表中以字母顺序显示。右键单击解决方案资源管理器中的国家表,添加一个查询以打开查询设计器。创建一个以国家名字升序排列的名为“SortedStates”的查询: 接下来,通过右击解决方案资源管理器中的城市表,再次选择添加查询来创建一个称为"CitiesByState"的查询。这一次我们将创建一个参数化的查询:Where State.Id属性等于一个称为Id的新参数。查询设计器现在应该如下所示: 现在,像平常一样创建一个客户详细信息屏幕。右击Screens节点并选择"添加屏幕",选择编辑详细信息屏幕模板,然后为屏幕数据选择客户表。屏幕设计器将被打开,而且客户实体中的所有字段都将在内容树中。城市字段显示为自动完成框。 下一步,我们需要将数据项添加到我们的屏幕中,用于跟踪所选的国家。我们将使用此值来决定城市列表上的筛选器,以便用户只看到所选国家中的城市。单击"添加数据项目",并添加称为 SelectedState 的国家类型的本地属性。 下一步, 拖动SelectedState到内容树中的City上面。LightSwitch 将自动为你创建一个自动完成框控件。 因为我们想要以排序方式显示国家, 那么下一步将 SortedStates 查询添加到屏幕中。再次单击"添加数据项目",这次选择查询,然后选择 SortedStates。 接下来选择内容树中的 SelectedState 自动完成框,并在属性窗口中,将Choices属性设置为 SortedStates。 接下来,向屏幕中添加 CitiesByState 查询,并将城市自动完成框中的Choices属性设置为这个查询。再次单击"添加数据项目",然后选择 CitiesByState 查询。 然后选择城市自动完成框,将Choices属性设置为该查询。 最后,我们需要挂钩参数绑定。选择CitiesByState 查询的Id参数,然后在属性窗口中设置Parameter Binding为 SelectedState.Id。一旦你这样做了,左侧的灰色箭头将指示绑定成功。 一旦你设置查询参数的值,LightSwitch 将自动执行查询,因此你不需要为此编写任何代码。按下 f5 键,看看你工作的成果。请注意,城市下拉列表是空的,直到你选择一个国家,此时它激活CitiesByState 查询并执行它。此外请注意如果你选择了城市,然后更改国家,它会仍然正确显示所选内容,不会消失。只要记住当用户更改国家选择时,城市查询会针对服务器再次执行。 另一件你可能要做的事情是初始化显示这个城市属于哪个国家。当屏幕打开时,选定国家是空白的。这是因为它绑定到一个没有数据的屏幕属性。但是我们可以轻易地在代码中设置SelectedState 的初始值。回到屏幕设计器右上方下拉列表中的"编写代码"按钮,选择…

0

LightSwitch在dnrTV上的使用技巧

原文发表地址 LightSwitch Tips & Tricks on dnrTV 原文发表时间 2011-8-17 13:51 注意,带着对Carl Franklin关于dnrTV一如既往的喜欢,我回来了,我会向你们展示一些在屏幕和查询中可以用得到的技巧.想了解如何向任意控件中添加命令栏,创建自定义的搜索屏幕,怎样将参数传递到查询中,以及屏幕布局的微调。 请观看:Beth Massi 关于LightSwitch 2011的使用技巧 以下是我想和大家分享的一些链接: · LightSwitch 开发中心 & “我如何使用”视频 · 我如何:在LightSwitch中创建自定义的搜索屏幕 · 怎样在LightSwitch中创建多栏自动完成的下拉框 · 怎样在LightSwitch中向自动完成下拉框添加数据 · 在数据输入屏幕上筛选查询列表 · LightSwitch 屏幕命令技巧 希望大家喜欢 !

0

"我命令你" – 关于LightSwitch界面的指令技巧

[原文发表地址] “I Command You!” – LightSwitch Screen Commands Tips & Tricks [原文发表时间]   2011-10-06 13:58 在这篇博文中,我总结了各种指令技巧,在商业应用程序中为界面添加功能时,这些指令技巧是非常常见的。其中一些在LightSwitch论坛,社区博客和样本中都有零散的介绍,不过我觉得做一个总结会让大家更方便查看。我在构建自己的LightSwitch应用程序时经常使用这些技巧。 在这篇文章中,我会向你展示: 如何创建一个指令 如何在开启一个界面后打开另一个界面(用参数或不用参数) 如何打开一个模式对话框或窗口 如何打开浏览器并导航到URL 如何打开计算器(或者其他Windows系统程序) 如何打开一个“打开文件”对话框                。如何为文件打开默认程序(比如办公文档) 那就让我们开始吧! 如何创建一个指令 首先我要先明确一下我所说的“界面指令”是什么。指令就是一些按钮(或者链接),用户点击这些按钮来执行一系列行为。你可以向任意控件,比如网格和文本框以及界面本身添加指令。看看这个文档。 如何:向界面添加一个自定义指令。指令会在界面设计器左边的模型中显示,由粉色方法图标来表示。通常你会有三个默认指令——关闭,刷新和保存。在运行应用程序时,刷新和保存指令默认情况下会出现在界面指令栏中。 创建指令可分为两部分——创建实际按钮(或链接),然后在command_Execute方法中编写执行指令的代码。(你还可以在command_Execute方法中编写代码来控制是否启用或禁用指令按钮。)指令可以是按钮,也可以是链接,通常都会在界面上方的功能区中(称为界面指令栏),当然在数据网格或者最顶端的组件中(称为指令栏)也会显示,这些都是在创建界面时默认设定的。不过,你可以向界面中的任意控件添加你想要的指令,这样指令的位置安放就有了很多灵活性。下面是一个涵盖了多种指令的界面: 要向界面指令栏或者一组指令栏添加指令,只需在界面设计器上选择它,点击+添加按钮。取决于控件LightSwitch将显示一套预设指令。在那些显示单一实体数据的组件上,你可以添加预设指令“删除”,它可以删除当前的记录。而在处理多实体的数据网格和列表上,你可以从许多指令中选择添加,编辑和删除记录的指令。你还可以右击选择“覆盖代码”来覆盖这些指令的默认行为。 要创建一个新的自定义指令,选择“新建按钮”并赋予方法名称。这样它就会在界面设计器左边的模型中显示。按钮创建之后,右击并选择“编辑执行代码”来编写指令代码。 如果在控件上没有看到指令栏(比如标签,文本框,日期选取器,自动完成框等等),你可以右击控件,然后在菜单中你会看到“添加按钮…”。你也可以点击界面设计器顶端的“添加布局项”,选择“添加按钮…”。如果你在界面自定义模式中运行应用程序,那就选择控件,点击目录树上端“添加按钮”图标。这让你能够灵活地将指令放在屏幕上的任意位置。 现在你知道了如何按喜好创建指令,下面是一些为自定义指令编写常见代码的小技巧。注意你可以在任意界面方法中编写这个代码,它们并不局限于指令。虽然可能在很多最常见的地方,你会看到这样的自定义代码。 如何打开另一个界面(用参数或者不用参数) 这在LightSwitch中很常见,也非常简单。要打开界面,你可以使用应用程序对象来访问你所有的界面,以及调用一个“显示”方法。 1: Private Sub OpenMyScreen_Execute() 2: ‘ Write your code here. 3: Me.Application.ShowCreateNewCustomer() 4: End Sub 你还可以在界面上定义可选的和必需的参数。比如如果我们创建一个基于查询的界面,这就需要一个参数,那么LightSwitch会在模型中为我们生成一个界面字段,以反馈给查询。你可以选择这个字段,在属性窗口中指定这个作为界面参数,或者指定是否需要这个参数。 请记住:必需参数的界面在主导航栏中是不会显示出来的,因为它们必须在代码中才能调用。 1: Private…

0

在LightSwitch屏幕上添加静态图片和文字

[原文发表地址] Adding Static Images and Text on a LightSwitch Screen [原文发表时间] 2011-06-15 08:06 很多时候你会想在数据输入屏幕上显示静态图片或文字,比如公司logo或者标签上的一些帮助文字在屏幕上引导用户。在屏幕按钮上添加图片其实很简单,就和在属性窗口设置一样简单。不过,当你想直接在屏幕上显示图片或者静态文本时,你就得做一系列工作了。查看一下我几周前发布的Contoso构造示例,你会发现“主页”屏幕在完全自定义屏幕布局中显示了很多静态图片和文本。这篇博文中,我会通过演示这个示例,向你展示如何在LightSwitch屏幕上添加静态文本和图片。 屏幕数据项和目录树 默认情况下,你在Visual Studio LightSwitch中创建的屏幕上的所有控件都必须绑定到一个数据项。屏幕设计器把所有的数据项都显示在了左边的视图模型中。在中心的就被叫做“目录树”。目录项组成了这个树——这些是绑定到每一个数据项的空间。 所以当在LightSwitch中建立屏幕时,目录树中的每一个控件都必须绑定一个数据项。这个数据项可以是表中的一个域,一个表的集合,或者任何你添加至视图模型的数据项。屏幕模板会引导你设置布局,以及绑定到特定类型屏幕的所有数据;可能是搜索屏幕,详细信息屏幕,新数据屏幕等等。这些模板只是起步,你可以做进一步的自定义。实际上,这个例子中的主页屏幕就是一个完全自定义的布局。选择了模板之后,我删除了目录树中所有的项,并建立我自己的布局。 数据项可以是像字符串或者整数这样的基本属性,可以是从屏幕代码或者按钮调用的方法,或者可以是来源于查询的表。要手动向屏幕添加一个数据项,点击屏幕设计器上方的“添加数据项”按钮。然后你就能指定此数据项的名称和类型了。主页屏幕就是所有这些数据项类型的结合。 设置数据项 你可以通过添加数据项对话框以本地属性形式添加静态图片和文本至屏幕,然后通过从左边视图模型中拖动它们将它们布局至目录树。因此要向屏幕添加一个静态图片,首先点击“添加数据项”,选择本地属性,将类型设为图片,然后命名属性。 点击确定,它就会在屏幕设计器左边的视图模型中出现。拖动数据项到目录树中你希望的位置(如果不成功,你可以稍后运行(F5)并在屏幕上实时移动它)。最后,在编辑器中把控件改为图片查看器。 重复同样的步骤添加静态文本。要添加静态文本,首先添加数据项,选择本地属性,将类型设置为字符串,然后命名属性。拖动项至目录树,然后将控件变为标签。 初始化静态属性 由于静态屏幕属性并非源于数据表,所以你需要在屏幕显示之前设置属性值。你可以在屏幕的InitializeDataWorkspace方法中完成这步,这个方法会在任何查询执行前运行。你可以通过下拉屏幕设计器右上方的“编写代码”按钮,进入方法。要设置一个图片和一个文本静态属性,你要写这样的代码: Private Sub Home_InitializeDataWorkspace(saveChangesTo As List(Of IDataService)) ‘ Initialize text properties Text_Title = “Contoso Construction Project Manager”   ‘ Initialize image properties Image_Logo = MyImageHelper.GetImageByName(“logo.png”)   End Sub 为了加载你需要的静态图片你需要转换到文件视图,右击Client项目的\Resources文件夹,选择添加–>已有项。浏览图片,然后将构建行为设置为“嵌入源”。 下一步你需要写些代码以加载图片。在Contoso构造示例应用程序中,它在不同的屏幕中使用静态图片,所以我创建一个帮助类,叫做MyImageHelper,它可以在客户端代码任意位置使用。而在文件视图中,右击Client项目中\UserCode文件夹,选择添加–>类。将之命名为MyImageHelper然后创建一个静态(共用的)方法,以加载图像。…

0