DSkin入门教程和注意事项新人必看 2018_第1页
DSkin入门教程和注意事项新人必看 2018_第2页
DSkin入门教程和注意事项新人必看 2018_第3页
DSkin入门教程和注意事项新人必看 2018_第4页
DSkin入门教程和注意事项新人必看 2018_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DSkin 入门教程和注意事项1.通过授权客户端更新和下载dll,包含了以下4个文件凰 DSkin.Design.dll凰 DSlcin.dll DSkin.XMLMl更新文肖txtDSkin.dll 是主要的控件库DSkin.Design.dll 是开发和设计的支持库,如果没有引用,里面大部分控件将不能在设计器里正常使用,而且会 报未授权,发布的时候不需要该 dll。DSkin.xml 是 VS 的智能提示文件,对 DSkin.dll 里面的方法属性等提供提示说明一致,这样不容易出问题。更新文档.txt是DSkin的更新日志,可以查看DSkin更新的功能和控件以及修复的BUG一致,这样不容易

2、出问题。为.net版本,根据项目需求下载相应的版本,.net版本尽可能2.0 版本的是包含 Linq 的,使用的时候可以加上 using System.Linq;2.使用的时候需要引用DSkin.dll和DSkin.Design.dll,另外DSkin.xml需要和DSkin.dll放在同一个目录,一般是Debug 目录。把DSkin里面的控件添加工具箱,可以新建个名称为DSkin的选项卡,直接把DSkin.dll拖到工具箱里面就可以了。J J 引用DSkinDSkin.Desig n窗体的使用:添加窗体,继承 DSkinFormI*1J-添加窗体,继承 DSkinFormI*1J-using

3、 DSkin.Forms;LJI*LJFl-J J1.E namespace tEst3个引用public partialclass Forml : DSkinForm注意: DSkinForm Layered 模式下支持 注意: DSkinForm Layered 模式下支持 DSkin 的大部分控件,以及其他一部分带有 Paint 事件的控件,把那些控件放在 ControlHost 里面。ControlHost不能相互嵌套,只能一层。因为ControlHost是一个独立的窗体,添加之后会在控件最顶层,尽 可能的少用或者不用 ControlHost,如果你不需要透明效果和动画效果,你可以直接

4、把窗体的IsLayeredWindowForm改成False,关闭Layered模 式,这样窗体就可以支持其他普通控件了,可以不需要ControlHostLayered 模式是指 DSkinForm Layered 模式是指 DSkinForm 的 IsLayeredWindowForm 为 trueTru已in rlILayered模式的优势:更高的呈现效率,更好的渲染效果,不会闪烁,支持窗体的任意透明,支持窗体动画。QQ、迅雷、酷狗等等都是采用这种方式呈现的缺点:不能很好的支持普通控件做异形窗体,在Layered模式下,把背景色设置成透明色Back 匚 cilor口,然后设置透明的PNG图

5、片为背景就可以了如果要将窗体当成子窗体添加到其他窗体或者控件里面需要将该子窗体的IsLayeredWindowForm改成False, 否则会报创建句柄错误。DSkin 里的 DSkinDataGridView做异形窗体,在Layered模式下,把背景色设置成透明色Back 匚 cilor口,然后设置透明的PNG图片为背景就可以了如果要将窗体当成子窗体添加到其他窗体或者控件里面需要将该子窗体的IsLayeredWindowForm改成False, 否则会报创建句柄错误。DSkin 里的 DSkinDataGridView、DSkinSplitPanel、DSkinChatRichTextBox

6、、DCSkinComboBox 不支持 Layered 模式4常用控件的主要事项:DSkinButton、 DuiButton:w0-n.uiAdaptlmageIsPure ColorTruei一i适应图片大小,这个时候控件尺寸由Normallmage的图片尺寸决定,|*3FalseU U ILH7I IU LJH LJCI I LJLI IIButton Style是否为纯色,默认会绘制一层样式层。可以设置按钮风格DSkinListBox、 DuiListBox:添加完项目之后要调用LayoutContent();方法,现在一般可以不需要手动调用了项目布局的位置偏移,可以通过设置项目的Ma

7、rgin属性来控制启用多行多列的时候,项目布局由ItemSize属性决定,如果是浮动布局可以不需要设置ItemSizenems田KemSize1001 100DSkinListBox绑定数据源和设置模板/设置模板dSkinListBoxl.Template = typeof(DSkinListitemTemplate); dSkinListBox1.DataSource = data; /设置数据源模板设计为虚拟控件设计,继承DSk in Lis tIt emTempla tenems田KemSize1001 100DSkinListBox绑定数据源和设置模板/设置模板dSkinListBox

8、l.Template = typeof(DSkinListitemTemplate); dSkinListBox1.DataSource = data; /设置数据源模板设计为虚拟控件设计,继承DSk in Lis tIt emTempla te/通过重写On Load方法或者注册Load事件来设置绑定值protected override void OnLoad(EventArgs e)base.OnLoad(e);duiPic tureBox1.Image = Image) this.Eval(字段名 1); duiLabel1.Tex t =this.Eval(字段名 2).ToS tr

9、in g();DSkinListBox、DuiListBox 的选择模式,可以设置为无,单选和多选FlaatTopTrueRadioSelection Mo de项目选择模式SelectionMode启用选择之后设置选择效果,绑定 ListBox 的 ItemSelectedChanged 事件,通过这个事件来设置项目的效果Paint日选择行为dSkinListBoxIvItemSelectedChanged日杂项DSkinCombobox、DuiCombobox DEkinStringToltems口 n iiM一亠何生*将每行文字转换成一个项目AutoDrawSelecedltem选中的项

10、目显示方式,False是文本显示方式,True的时候是控件图像显示方式添加的 Item 是虚拟控件DSkinTreeView添加节点for (int i = 0; i 100; i+)DSkinTreeViewNode dNode = new DSkinTreeViewNode(); dNode.Tex t =根节点+ i.ToS tri ng();dNode.IsCus tom =true;/启用自定义样式dNode.ShowCheckBox =false;dSkinTreeViewl.Nodes.Add(dNode);for (int j = 0; j 10; j+)DSkinTreeVi

11、ewNode nodenode = new DSkinTreeViewNode();nodeno de.Tex t 子节点+ j.ToS trin g();dNode.Nodes.Add(nodenode);for (int k = 0; k new DSkinGridListColumn Name = a, Width = 50 ).ToArray();绑定数据源/设置模板,模板是继承 DSkin.Controls.DSkinGirdListCellTemplatedSkinGridListl.Columns2.CellTemplate = typeof(Component2);object

12、 data = new object10000;Image bt = Properties.Resources.bt;for (int i = 0; i data.Length; i+)datai =new 状态=23状态,图片=bt,姓名=24dfs + i, ID = i ;dSkinGridList1.DataSource = data;/绑定数据源,数据源可以是 DataTable, DataSet. List 等 等,没有设置模板的列需要设置 DataPropertyName 属性来关联绑定的字段名更新数据源的时候,如果数据源对象没有变,直接调用DataBind()就可以更新数据显示

13、了手动添加数据需要using DSkin.Con tr ols;for (int i = 0; i 500; i+)dSkinGridList1 .Rows.AddRow(i, asda + i, hgsf, kjt);自定义分页数据private void dSkinGridList1_PageIndexChanged(object sender, EventArgs e)/CustomPage自定义分页为true, RowCount可以自定义,设置总数据量。在PageIndexChanged事件可以通过添加 Row或者重新绑定数据源来加载对应页面的数据/1、添加Row数据dSkinGrid

14、Lis t1 .Rows.Clear();for (int i = 0; i 100; i+)dSkinGridLis t1.Rows.AddRow(dSkinGridLis t1.PageIndex,测试数据,231, i);/2、绑定对应页面的数据Image bt = Prope rt ies.Resources.b t;Listobjectdata = new Listobject();for (int i = 0; i c.TagName = img).ElementAt(0);a.MouseUp += (s, E) =/绑定事件Console.WriteLine(MouseUp +

15、E.Location);DuiBrowser、 DSkinBrowser使用浏览器控件需要在群里下载Wke.dll, plugins目录的NPSWF32.dll是Flash插件,如果不使用Flash可以删除【插件】用忍861页鬥力pduiBrowser1.InvokeJS(alert(aaa);/调用 JS 触发 AlertBox事件JS调用c#,建议把委托定义成全局的,防止被回收jsNativeFunction js = new jsNativeFunction(a =MessageBox.Sho w(n ewJsValue(a, 0).ToS trin g();/获取 JS 调用C# 的参

16、数,后面的数字是 参数索引return JsValue.JsString(a,测试);/JS调用C#方法之后的返回值duiBrowser1.JsBindFunmsgBox, js, 1);/绑定 C#的方法,msgBox 是方法名,数字为绑定 到JS里的方法参数数量网页里只要用JS调用msgBox( aa123测试);/这样就可以回调调用C#的方法了新版的是采用Ewe内核的,群里下载Ewe的dll,比之前的wke更加完善一些。使用方式差不多。不过提供更加便 捷的JS调用C#的方法I v1 I y I jprivate void WkeFormLoad(object senderj EventA

17、rgs e)dSkinBrowserlGloba10bject = this;dSkinBrowserl Lc bcin. -w-rrrrrr!* object DSkin.Controls.DSkinBrowser.GlobalObject get; 全局对象用来做兀dSkinBrowserl Lc bcin. -w-rrrrrr!先设置调用方法的对象JSFunction0个引用public string Test(string msgj int n)return msg + n;|JSFunction0个引用public double Testl(double msg)return msg

18、;定义js要调用的C#的方法,DSkin.DirectUI.JSFunction特性加到要调用的方法上;参数和返回值要对应;最后网页中的JS直接调用Test(哈哈123test,1000)就可以回调给对应的C#方法了MessageBox.Show(dSkinBrcwserl,InvokeS(Test(哈哈巳st ,1000) ,ToString();MessageBoxShow(dSkinBrowserl.Invoke3S(Testl(123.2325).ToDoubleQ ToString()C#调用JS, JS调用C#,获取返回值,弹出窗体显示结果JS的Alert弹窗那些需要通过Alert

19、Box这些事件来捕获,自己定义弹窗。否则没有弹窗显示读取程序内嵌网页,和WebUI实现方式一样,看下面的釆用Html开发桌面程序就是添加程序集,网页设置为内嵌资源,设置 URL注意:XP系统上无法使用flash插件浏览器控件不建议加到用户控件里。如果要加,请写代码添加,判断DesignMode。设计模式下不要创建浏览器控件。否则会报无法加载dll的问题DSkinChart绑定数据源,数据源可以是集合、数组、DataTable、DataSetListdoubledata = new Listdouble();/一条数据Random r = new Random();for (int i = 0;

20、 i 7; i+)dat a.Add(r.Nex t();dSkinChart1 .DataSource = data;多条数据,可以用二维数组或者DataTable、DataSetArrayList ChartData = new ArrayList2;ChartData0 = new ArrayList();Random r = new Random();for (int i = 0; i 7; i+)Cha rt Da ta0.Add(r.Nex t();ChartData1 = new ArrayList();for (int i = 0; i dSkinGroupBoxl = new

21、 DSkin.ControlsDSkinGroupBoxO;I(SystemComponentModel.ISupportInitialize)(thisdSkinComboBox4.ini将 DSKinGroupBox 的代码移到其他控件下面,然后再随便改一下设计器的控件,让设计器重新整理生成的代码 这样添加到DSKinGroupBox的控件设置的属性就有效果了。5虚拟控件的使用:可以通过实体控件的智能任务卡添加,或者DUIControls属性里添加也 uuiba 匚 KgDu 门 dike UbKin.uireccui.uuiDUI Controls傑合).DUI Controls I I

22、J r ILi I口 e 厂ILd IT-a I ir a.DuiBaseControl 集第矚器成员(M):Q duiTextBoxIDuiBaseConUolDu i LabelDu 成员(M):Q duiTextBoxIDuiBaseConUolDu i LabelDu i Button DuiPictureBox DuiCheckBox Du i Rad io Button DuiComboBox DuiTextBoxDuiScrollBarR)VDUI子控件集合Controls傑合)AV布局AnchorTopLeftDockFillLo ratio n0. 0Margina a a

23、oSize487,盟97行为EnabledTrueIVIou5&EventBubit TrueVisibleTrue7iSH(Name)duiTextBoxIDesignModeCanl FalseDesignModeCanl FalseVduiTextBoxI 属性(P):屋孰I ADuiProgressBarDuiPieDuiT ackBar DuiListBox DuiGraphics DuiHtmlLabel虚拟控件支持单个组件复制和粘贴,选中需要复制的虚拟控件,Ctrl+C,然后点击选中目标控件,Ctrl+V就可 以把虚拟控件复制到目标控件了。需要注意暂时还不能同时复制控件内部的虚拟

24、控件,复制过去的虚拟控件 位置不变,另外需要支持虚拟控件设计模式的控件才可以作为目标控件粘贴。否则粘贴之后虚拟控件的Parent 属性为Null,需要手动设置Parent属性,才可以转移到目标控件。如果通过设计器虚拟控件集合添加的虚拟控件没有添加到界面上,你可以在属性栏里的组件下拉框里找,如 果有的话,设置该虚拟控件的Parent属性到你需要添加到的控件里,如果不能设置,你重新打开设计器就可 以了DSkinBaseControl 上的虚拟控件才可以在设计器上拖拽虚拟控件支持多选,用Ctrl键多选,可以用来同时设置多个控件的属性duiTextBoxI FalseDesignModeCanResi

25、ze False duiTextBoxI FalseDesignModeCanResize False DesignMode 匚目 n已but TrueNameDesi gnh/lod eCa n IV1 ove虚拟控件支持文档设计模式,右键添加组件,把继承类改成DuiBaseControl或者其他虚拟控件就可以了。 这样虚拟控件就像用户控件一样,可以直接设计,可以往里面添加虚拟控件和组件。做列表项目什么的都很 方便。namespace 1:已51:2个引用publit pmrtie丄 class 匚ornponentl : DSkin.DirectUI. ZJuiBaseControl虚拟控

26、件集合支持 Linq 查询和 Lambda 表达式查询l.dSki nBmsetZo rrtro.:l. DUI 匚 on trals. FindG FindAllG Findindex0 FindLastO FindLastlndex 咗 FirstoFirstQrDefaulto瞇i ForEachoP0 GetEnumerator址Query 扩展方法需要添加 using DSkin.DirectUI;查询dSki nBaseCo nt roll里面的所有DuiLabel并执行动画dSkinBaseControl1.InnerDuiControl.Query(l = true).DoEf

27、fect(0, 100, 500, Left, (p) = );使用DoEffect来做简单的动画DoEffect是封装了定时器的方法回调,using DSkin.DirectUI;添加这个命名空间之后会有多个 DoEffect方法重载/自定义特效Opacity = 0;Rectangle rect = Screen.PrimaryScreen.WorkingArea;int top = (rect.Height - Height) / 2;this.Location = new Point(rect.Width - Width, top);int centerLeft = (rect.Wid

28、th - Width) / 2;this.DoEffect()=if (Left centerLeft + 4)Opacity = 1 - 1.0 * (Left - centerLeft) / (rect.Width - Width - centerLeft); Left -= (Left - centerLeft) / 5);ret urn t rue;/继续动画执行Opacity = 1;ret urn false;/停止动画执行);虚拟控件的SendTask方法的使用在使用自定义模板的时候经常会遇到需要处理模板的虚拟控件的事件,如果采用外部遍历虚拟控件来绑定事 件,会感觉很麻烦,所以加

29、增加了这个SendTask方法。使用的时候很简单,只要需要在模板里绑定对应的处理事件,里面调用SendTask方法,把任务发送出去,然 后通过对应的承载的实体控件或者父级虚拟控件的AcceptTask的事件来处理就行了。比如:这个是一个 DSkinGridList 比如:这个是一个 DSkinGridList 的 Cell 模板,我需要的就是 DuiCheckBox 被选中的时候,弹出一个消息框,然后我就 在这个模板里绑定这个虚拟控件的 CheckedChanged 事件凰性 xduiCheckBoxI 凰性 xduiCheckBoxI DSki n. Di rectU I. Du iCh e

30、ckB c -1个引用pirivatE void duiCheckBoxl_CheckedChanged(object senderj Even呂s e)if (duiCheckBox1Checked)this. SendTask( r测试任务);Checked Cha img edduiCheckBoxIC 司玉dSkinGridLis.倉cceptTask += (s E)=fJiessageBox. Show(E. TaskName);通过这个事件来发送任务。然后,我们需要接收这个任务,;l通过这个事件来发送任务。然后,我们需要接收这个任务,可以在窗体的Load事件里绑定承载这个Cell

31、模板的实体控件的AcceptTask事件,通过这个事件来接受刚 才定义在Cell模板里的任务,接收到了之后,执行该任务。8 采用Html开发桌面程序新版WebUI开发模式点这里用 DSkin 的 Html 开发桌面的优势:1支持 DPI 缩放,不会出现界面模糊和界面过小的问题有海量的界面模板资源,可以支持J Query, Bootstrap等等插件只要一点点Html基础的就行了,开发界面很简单,易上手支持JS和C#相互调用附加的dll 小,才3M,比起用Cef那个小太多了缺点:不能完全兼容Html5和CSS3,毕竟dll体积那么小,不能包含所有浏览器的功能,显示速度比不上浏览 器。内存占用,比

32、普通的桌面程序稍微耗内存。开发准备:项目右键添加窗体,改继承,改成DSkin.Forms.WebUIFormH I J I 7 Upublic partial class WebUITest : DSkin.Fo项目右键,添加放Html项目右键,添加放Html文件的目录,比如View群里下载WebUI的模板文件,放到这个View目录里,右键修改这个模板文件的属性index.html文件雇性日咼圾真制到输出目录桶制嵌入的资源白寺WT目生成操作,改成嵌入的资源,所有相关的Html,图片还是CSS,JS文件都要改这个属性打开那个index.html,在ui-content这个DIV里面加入你要的内容

33、,然后保存 !-内容开始-M 试在之前添加的窗体的构造函数里设置资源的链接,file:/要3个斜杠4个引用public partial class WebUITest : DSkin.Forms.WebUIForm2个引用public WebUITest()设置网页链接,需要代丄/开头然后程序集名称/若干个目录。/文件名this.Url =吁订电:/tEst/iEVj/inclExhtinT;最后,设置刚才的窗体为主窗体,然后添加资源,生成就可以运行了static class Program/ summary/应用程序的主入口点。/ STAThreac0个引用static void Main(

34、)Applicatior * EnableVisualStylesf);Application.SetCompatibleTextRenderingDefaulfalse)设置网页资源所在的程序集”当前设置的是当前的程序集.键值是程序集名称 /如果网页资源是在其他项目或者口1里,要用Assembly加载,添加到这里Ewe Co re + ResoureAsseiiblys + AcIcICtest, System.Reflection.Assembly. Get Execut ingAssembly(); Application,Run(new WebUITest()j注意事项:网页里的资源链

35、接都要用相对路径,当然也可以是http开头的网络资源,比如Home测试页面DPI的支持,需要项目设置配置* PropertiesDPI的支持,需要项目设置配置* Propertiesq_l_*弋 dpp * iui i i JLg LpT寸li icnu JLehM jli luuvtfrui hiii i JLgi lup jlmu luixcs- jl 上 jlii 总冃 纠_口 丄八 li ue48505152application xmlns=urn:505152dpiAware xm.lns = http: /schemas*miurosoft*coin/5f/2005/Winclc

36、iws5ettingsxtrue/dpiAware ii 11 ks ii Ih IT 11-namespace test.Pages11个引用class test : DSkin,Forms.WebUIPage0个引用public test(WebUIForm ownerIntPtr string url : base(ownerj jSj url)DSkin,DirectUI.JSFunction0个引用public void TestQ3个引用protected override void OnDocumentReady(DocumentReadyEventArgs e)/e* FrME

37、ObjHt = this;这个要注释掉 不能有多个相同名称的框架页面文件,比如不同目录里都有index.html而且都用框架来加载$C#dxc).click(function () Test阳ync就是页面类里的方法名称页面类里需要定义一吐阳yncKJ方法。参数是一字符串 GetAsyncData(TestAsyncj 参数,function (data) Msg(data););l);/III/III/III/异步获取数据的测试方法,异步方法都要定义一个字符串参数和字符串返回值,该方法执行在线程池中,操作控件记得用Safelnvoke eturns/returnso个引用public str

38、ing TestAsync(string parameters)System Threading.Thread.Sleep(1000); return 结果正常:+ parameters;x封装好了一个异步获取数据的方法,简化JS里异步获取数据的操作 新的异步调用方法:C#方法定义和之前同步方法一样/ /测试异步调用/ /summa/ 这里的回调参数a就是上面C#方法的返回值同步调用i onclick=console.log(TestAsync(asd, 1223)注意:异步调用C#方法,如果C#方法里有操作UI的,需要委托到主线程新版WebUI开发模式新版开发模式采用MiniBlink内核,

39、这个内核更新,功能更完善,而且提供开发者功能,内核还在更新中,而且是开源项目: HYPERLINK /weolar/miniblink49 /weolar/miniblink49 女口果是内核方面的问题可以至H HYPERLINK / / 提问mb.dll 群里下载 开始开发 新建 X86 的 Winform 项目,窗体继承改成 DSkin.Forms.MiniBlinkForm4个引用public partial class Forml : DSkin,Forms,MiniBlinkFcrm2个引用public Forml(string url) : base(url)|Initialize

40、Component();Size = new Size(int)(1000 * ZoomFactor), (int)(60 * ZoomFactor);窗体尺寸设置和旧版的一样,期望大小乘以ZoomFactor,是为了适应DPI缩放;app.manifestForml.csog app.manifestForml.csog ri.csindex.htmlcc3940414243444546474849505152!-! - - v/compatibility-1!-指巫该座用程序可以感0 DPI且Windows在DPI较高时将不会冯具进行-1自动缩放。Windows Presentation

41、Foundation (WPF)应用程序自动DPI ,无需 逓睪加入。逓睪加入此设置的Windows窗体应用程序(目标潑定为.NET Framework 4*6 还应 在具 app.config 中将EnableWindowsFarmsHighDpiAirtciResizing设置设置为trueo - application xmlns=urn: schemas-mic:rasoft-cani:日 dpiAware xnnlns=http: /schemas*mic:rasaft2005AJindowsSettingsrue/dpiAware 这段DPI代码取消注释,如果没有app.manif

42、est,可以在项目属性里,点击启用,再取消启用就有这个文件了Debug Any CPUDebug Any CPU生成事牛Jg鑒空空的代码访问安全权限。工调试启用匚1泳5安全设置资源::这是主全可信的应用程序街服务::::这是部分可信的应用程序设置ClickOnce安全权限M謹从中安装应用程序的区域辺:弓I用路径M謹从中安装应用程序的区域辺:using System.Collections.Generic;using System.Linq;using System.WindowsForms;using DSkin.DirectUI;namespace WebUIDemo0个引用static c

43、lass ProgramZ/ /应用程序的主入口点。III STAThread0个引用 static void Main()Application.EnableVisualStyles();ApplicationSetCompatibleTextRenderingDefault(false);/添加程序集网页资源,程序集名称,程序集MiniblinkPInvoke.ResourceAssemblys.Add(WebUIDemo, System.Reflection.Assembly.GetExecutingAssembly(); /绑定的页面Page的命名空间MiniblinkPInvoke.

44、PageNameSpace = WebUIDemo.Pages; Application.Run(new Forml(res:/WebUIDemo/Views/indexhtml);印解决方髦WebUID已mQ(1个项目)J 空 WebUIDemoh PropertiesP 引用 门 bin0 jsb chiJPagesc dashbaard.esb index.es程序集里的资源Url写法是res:/开头的不是之前的 HYPERLINK file:/res:/WebUIDemo/Views/index.html res:/ 程序集名/若干文件夹/文件名区分大小写文件属性要改成嵌入的资源丿 Z

45、 WebUIDemo* Properties一.引用rj binJI性index.html文件雇性1 A日咼级复制到输出目泉穆制生成操件|嵌A的资源E自具白手酉目虫 jsi:j obj丿 R Pagesb dashbaard.esc index.es/ 1 View&index.html 自 index.html 自 Form1.csJ 空 WebUIDema*Propertiesb引用:d binb js:J obj丿 Pages ctt dashboard.es 矽 index.es/ Viewsmstp_48_realmindex.htmlmstp_48_realmindex.html

46、曰 Form1.csA“绑定的页面Page的命名空间Html页面和C#类绑定,C#类代码就写在之前设置的页面和类的名称要一样,Html在哪个文件夹无所谓,区分大小写,支持主页面和框架页面的绑定。旧版的不支持 主页面绑定 类继承 DSkin.Forms.MiniBlinkPage/ summary/暂时只支持简单属性的双向绑定,以及C#集合MiniBlinksllection更新到UT的单向绑定*/ rt,必须要有对应的属性绑定才行,否则可能会导致整个页面不显示。Ctr 0个引用_public string Text|get return text; set OnPropertyC:hanged

47、(value# ref text); C#属性和页面双向绑定,依赖Vue,支持简单属性的双向绑定,和集合的单向绑定,复杂属性请用Json字符串JS中也可以用Get(“属性名”);Set(“属性名”值)访问和设置属性值,可以不需要Vue属性写法:string text = 文字;public string Textget return text; set OnPropertyChanged(value, ref text); Html 页面必须引用 vue.js Vue2.0兰 WebUlM 试 .,.-div id=pagediv id=ui-sys-bar onmousemove=if(ev

48、ent.button = 0) MoveWindow(); ondblclick=Command MaxOrNor() span id=header-titlediv id=ui-sys-commands01/sp span id=close title=关闭按钮onclick=Comnnand_Close() onmousennove=event.stopPropagation() v!内容开始ciframe id=testframe width=100% frameborder=0 height=100% allowtransparency=true src=mstp页面设置一个绑定的全局

49、ID,默认是page,如果想改成其他的,页面和C#类需要一起改,在构造函数里设置1个引用public class index : DSkinFmsMiniBlinkPage0个引用public index() 1 Id = ;页面里的Text就是绑定到C#里定义的Text的属性了绑定操作写好之后,Js中就可以操作这个Vue绑定对象了,对象名就是那个Id,默认为pageJs中的高级操作可以到Vue官网查看教程 HYPERLINK /v7guide/ /v7guide/集合绑定:using DSkin.Forms;MiniBlinkCollection items;3个引用public MiniB

50、linkCollection Itemsgetif (items = null)items = new MiniBlinkCollection(this) N return items;集合必须用MiniBlinkCollection才能绑定,泛型,可以支持简单的类对象绑定MiniBlinkCollection lis丈工tEm;1个引用public MiniBlinkCallection Listitemgetif (listitem = null)listitem = new MiniBlinkCollection(this)return lis丈工tEm;4 T弓丨用public cla

51、ss item1个引用public string name get; set; 1个引用public string text get; set; 构造函数里添加集合数据Id0: i0; i10 ; i+4-0个引用Id0: i0; i10 ; i+4-0个引用public dashboard()Items.Add(asdad 4- i);Listitem. Add (new item name =名字+ text =文字+ i ); 假如你在其他地方修改了集合属性,必须调用集合的SaveChanges();方法才能更新到UI/ /绑定方法需要绑定的方法前面加DSFunctiongfiRj以绑定

52、给兀调用了 ,参数类型和数量不要搞错了 / / DSkin.DirectUI.JSFunction0个引用public void AddData(string data)Items*Add(data); Items,SaveChanges(); _1 T引用public class dashboard : DSkin.Forms.MiniBlinkPage页面中的绑定写法,如果不懂的话,可以到Vue官网看看集合绑定写法v-for=item in属性名F:动态添加/button itemitem.textJs绑定C#方法和旧版一样,方法前面加JSFunction,方法参数只支持简单的数据类型,数量和类型要和JS调 用的对应Ill III方法可以以同步的方式调用,也可以异步调用,异步调用的话,方法体会在线程池里运行,如果里面有操作UI ,请委托到主线程,InvokeIII III III DSkin.DirectUI.JSFunctiono个引用public string GetData(string d日ta)SystemT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论