本周,我为亚太地区举办了一个网络研讨会: XAML (WPF) 简介和用于现代化桌面应用程序的数据绑定。
WPF大约10岁,平台已经成熟。在网络研讨会上,我解释了为什么我会选择WPF而不是Windows Forms作为我的下一个项目。
本次网络研讨会的关键词是 “DevOps”。在DevOps中,您将对应用程序进行更改以添加功能以满足业务需求。
WPF (XAML) 提供了许多强大的功能,允许您创建可测试、可维护的LOB应用程序,以便您可以放心地更改基本代码。
我还通过基本的XAML和数据绑定,DataContext。有了这些,你可以分开你的UI和逻辑/数据。
如果您无法参加我们的现场直播,我们已经录制了网络研讨会和下面的演示资料:
</noscript></div><script type = “text/javascript”> cs_setInnerHtml(‘video_1f88f265-5a79-4adf-a367-dccba9d76c31’,'<iframe type = \ “text \/html \” src = \ “\/\/www.youtube.com \/embed \/PB_ladEe8y0 \” frameborder = \ “0 \” width = \ “718 \” height = \ “431 \” allowfullscreen \/>’); </script></p> <div id = “video_649c3b75-9646-413b-8e06-c76888a906f0”></div> <p><span><strong></span></p> <ul> <li><a href = “/products/ignite-ui-angular” rel = “noopener noreferrer” target = “_blank”> 下载适用于WPF的Ultimate UI的30天免费试用版 </a></li> <li> 开始使用XAML和WPF</li> <li> 试用我们的WPF和 <a href = ” https://marketplace.visualstudio.com/items?itemName=Infragistics.InfragisticsXamarinFormsControlConfigurator ” rel = “noopener noreferrer” target = “_blank”>Xamarin.Forms Control Configurator </a>-您可以从Visual Studio Marketplace免费下载该工具!</li> </ul> <p> 如果要创建WPF LOB应用程序,我建议您在学习XAML之后也学习 <a title = “Prism” href = ” https://github.com/PrismLibrary/Prism ” rel = “noopener noreferrer” target = “_blank”>Prism</a>。Prism是一个框架,可让您创建松散耦合的,可维护的,可测试的XAML应用程序。</p> <p> 我没有在演示中使用该库,但是当我构建WPF应用程序时,我肯定会利用该框架。<a title = “Brian Lagunas” href = “/community/blogs/p/contributor?un = 1D9AB13873D5A63F33C17A125E2BC1E8E0784C68” rel = “noopener noreferrer” target = “_blank”>Brian Lagunas</a>,Infragistics中WPF的Ultimate UI和Xamarin的Ultimate UI的产品负责人,拥有该框架,并且他在社区中非常活跃。</p> <p> 让 & #39;s开始吧!</p><a title = “Ultimate UI for WPF试用版下载” href = “/downloads/request/00000000-0000-000000005656?p = wpf”><img alt = “Ultimate UI for WPF” src = ” https://download.infragistics.com/marketing/ 博客内容广告/WPF/Blog-incontent-Blog-incontent-WPF-650×200.jpg” width = “720” /></a></p><a title = “Ignite UI for Angular” href = “/products/ignite-ui-angular/入门 # installation” rel = “noopener noreferrer” target = “_blank”> </a></p> <div style = “清除: 两者;”> </div> <footer class = “post__footer”> <ul class = “post__social social — footer”> <li class = “post__social-item”> <span class = “post__ 喜欢 — footer”> <span class = “ui-presentcontent ui-like fa fa-竖起大拇指ui-tip” data-presentcontents = “c77f8cd00e104a0996f4983e5f205c98 | f7d226abd59f475c9d224a79e3f0ec07 |” data-tipcontent = “initialmessage” data-contentid = “c77f8cd0-0e10-4a09-96f4-983e5f205c98” data-contenttypeid = “f7d226ab-d59f-475c-9d22-4a79e3f0ec07” data-initialcount = “1” data-initialstate = “false” data-readonly = “true” data-initialmessage = “& lt;a href = & quot;/社区/成员/b2fe14bbe76b862ece557a24546532197be6a60f & quot; class = & quot; 内部链接视图-用户个人资料 & quot;>Ainsley Vande Creek & lt;/a> 喜欢这个” data-format = “{count}” data-configuration = “Format ={count}& amp;IncludeTip = true & amp;CssClass = fa fa-竖起大拇指 & amp;likeTypeId = 00000000-0000-000000000000”> </span> </li> <li class = “post__social-item likes — footer-anonymous”> <div class = “post__ likes-button — anonymous”><a href = “/login?ReturnUrl = https://www.infragistics.com/community/blogs/b/infragistics/posts/ 网络研讨会-recap-introduction-to-xaml-wpf-data-binding-for-modernizing-desktop-applications”> 登录 </a> 喜欢这篇文章!</div> </li> <li class = “post__social-item”> <div class = “addthis_inline_share_toolbox”> </div > </li> </ul> <div class = “post__tagList”> <ul class = “tags__list tags — list fa fa-tag”> <li class = “tags__item”> <a href = “/community/blogs/tags/webinar”>Webinar</a> </li> <li class = “tags__item”> <a href = “/community/blogs/tags/Ultimate + UI + for + WPF”>WPF的Ultimate UI </a> </li> <li class = “tags__item”> <a href = “/community/blogs/tags/WPF”>WPF</a> </li> <li class = “tags__item”> <a href = “/community/blogs/tags/For + Developers”>For开发人员 </a> </li> <li class = “tags__item”> <a href = “/community/blogs/tags/XAML”>XAML</a> </li> <li class = “tags_item”> <a href = “/community/blogs/tags/Infragistics + Ultimate”>Infragistics Ultimate</a> </li> </ul> </div> </footer> </article> <script type = “text/javascript” src = “https:// s7.addthis.com/js/300/addthis_widget.js # pobid = ra-59931f14a2587452”> </script> </div> <div class = “content-fragment-footer”> </div> <div class = “content-fragment scripted-content-fragment no-wrapper带间距响应-1” id = “fragment-1037” data-reflow = “ctl02_ctl02_content,ctl02_ctl02_singlecolumn,1,1,6”> <div class = “content-fragment-content”> <a href = “#” class = “btn — back-to-top”><i class = “fa fa-angle-up” aria-hidden = “true”> </i> </a> </div> <div class = “content-fragment-footer”> </div> </div> </div> </div> </div> <div class = “layout-footer”> </div> </div> </div> <div class = “footer-fragments-header”> </div> <div class = “单列footer-fragments evolution-reflow-container” data-related = “ctl02_ctl03_page” id = “ctl02_ctl03_singlecolumn” style = “显示: none”> </div> <div class = “footer-fragments evolution-reflow-container” data-related = “ctl02_ctl03_singlecolumn” id = “ctl02_ctl03_page”> <div class = “layout”> <div class = “layout-header”> </div> <div class = “layout-content content” id = “ctl02_ctl03_layout”> <div class = “layout-region content” id = “ctl02_ctl03_content”> <div class = “layout-region-inner content”> <div class = “content-fragment no-wrapper与-spacing响应-1” id = “footer-20” data-reflow = “ctl02_ctl03_content,ctl02_ctl03_singlecolumn,1,1,0”> <div class = “content-fragment-content”> <div id = “globalnav__footer”> <!– FOOTER –> <footer class = “ui-footer ui-footer — clearfix”> <div class = “ui-footer__wrap ui-footer — clearfix ui-footer__icons”> <a href = “/community/blogs/” target = “blank” “class =” ui-footer __ icon-link “><svg viewBox =” 0 0 512 512 “><path d =” M201.8 347.2c0 20.3-16.5 36.8-36.8 36.8 -20.3 0-36.8-16.5-36.8-36.8 36.8-36.8C185.3 310.4 201.8 326.8 201.8 347.2 zm128.2 204.7v54.5 c68.5 0.7 124 56.3 124.7 124.7 h54.5c306.7 285.3 226.9 205.4 128.2 204.7 zm128.2 166.6 c57.9 0.3 112.3 22.9 153.2 63.9 41 41 63.7 95.5 63.9 153.5h54.5c-0.3-149.9-121.7-271.4-271.6-271.9V166.6L128.2 166.6z “/></svg><!–[if lt IE 9]><em>RSS</em><![endif]–> </a> <a href =”/community/blogs/tags/podcast/default.aspx “target =” blank “” class = “ui-footer __icon-link”><svg viewBox = “-2 -2.5 20 20”> <路径d = “M8 16 s1.75 0 1.75-5.18 c0-.965-.784-1.75-1.75-1.75s-1.75.785-1.75 1.75 c6.25 16 8 16 zm2.147-1.766c.077-.296.136-.595.183-.897 l.035-.24 c.077-.032.154-.065.23-.1 1.215-.55 2.238-1.49 2.89-2.653.297-.534.516-1.11.646-1.71.148-.67.182-1.368.104-2.052-.073-.64-.246-1.266-.512-1.853-.31-.687-.746-1.316-1.28-1.848-.55-.55-1.203-.998-1.916-1.31-.737-.323-1.536-.2.5-34-.52-.81-.02-1.623.116-2.38.404-.73.278-1.405.694-1.983 1.218-.557.506-1.02 1.113-1.365 1.782-.29.57-.494 1.184-.6 1.815-.108.655-.112 1.326-.01 1.982.088.583.26 1.153.51 1.688.586 1.253 1.59 2.295 2.823 2.926.148.076.3.146.453.21.01.087.024.174.037.26.047.297.104.59.18.88-.276-.085-.546-.188-.808-.307-1.436-.65-2.64-1.77-3.392-3.155-.34-.624-.585-1.3-.728-1.995-.16-.782-.19-1.59-.09-2.382.095-.74.305-1.465.62-2.14.37-.792.884-1.515 1.51-2.125C3.606 1.483 4.37.973 5.2.62 6.066.256 6.997.062 7.933 c.938-.01 1.877.16 2.75.503.842.332 1.618.824 2.28 1.44.64.595 1.17 1.304 1.558 2.086.33.665.558 1.382.67 2.117.117.76.112 1.538-.013 2.296-.117.704-.722.322.2.574-.7-1.39-1.412 2.028-657-1.864-1.1 438 zm.346-2.854 l.006-.312c0-.21.003-.42-.03-.627-.01-.08-.027-.157-.047-.235.372-.307.685-.685.916-1.11.175-.324.303-.674.377-1.035.083-。407.1-.828.046-1.24-.047-.37-.15-.73-.302-1.07-.187-.414-.45-.793-.77-1.115-.322-.32-.7-.584-1.115-.77-.456-.207-953-.32-1.453-.333-.504-.013-1.01.075-1.48.26-.422.168-.814.412-1.15.72-.337.304-.617.67-.824 1.073-.17.33-.288.684-.354 1.048-.067.378-.077.766-.028 1.147.047.37.15.73.302 1.07.23.508.574.96.998 1.322-.024.088-.043.178-。057.27-.033.207-.03.415-.03.626 l.006.28c-.698-.435-1.28-1.05-1.674-1.775-.224-.41-.386-.855-.48-1.313-.105-.514-.124-1.046-.058-1.567.06-.467.19-.926.383-1.355.237-.524.57-1.003.976-1.41.406-.406.886-.738 1.41-.975.577-.262 1.205-.404 1.84-.42.637-.017 1.276.095 1.87.33.536.21 1.03.52 1.458.908.425.386.78.85 1.04 1.36.215.416.367.865.45 1.327.084.477.097.968.035 1.45-.06.467-.19.926-.383 1.355 0.396.876.2.16 c1.1.06 1.62-1.88 m4.. 2 1.764 1.765 0 .975-.79 1.765-1.764 1.765s-1.764-.79-1.764 c0-.973.79-1.764 1.764-1.764z “/></svg><!–[if lt IE 9]><em> 播客 </em><![endif]–></a> <a href =” https://twitter.com/infragistics “target =” blank “class =” ui-footer__icon-link “><svg viewBox =” 0 0 512 512 “><path d =” M419.6 168.6c-11.7 5.2-24.2 8.7-37.4 10.2 13.4-8.1 23.8-20.8 28.6-36 -12.6 7.5-26.5 12.9-41.3 15.8 -11.9-12.6-28.8-20.6-47.5-20.6 -42 0-72.9 39.2-63.4 79.9 -54.1-2.7-102.1-28.6-134.2-68 -17 29.2-8.8 67.5 20.1 86.9 -10.7-0.3-20.7-3.3-29.5-8.1 -0.7 30.2 20.9 58.4 52.2 64.6 -9.2 2.5-19.2 3.1-29.4 1.1 8.3 25.9 32.3 44.7 60.8 45.2 -27.4 21.4-61.8 31-96.4 27 28.8 18.5 63 29.2 99.8 29.2 120.8 0 189.1-102.1 185-193.6C399.9 193.1 410.9 181.7 419.6 168.6z “/></svg><!–[if lt IE 9]><em>Twitter</em><![endif]–></a> <a href =” https://www.facebook.com/infragistics “target =” blank “” class = “ui-footer__icon-link”><svg viewBox = “0 0 512 512”><path d = “M211.9 197.4h-36.7v59.9h36.7V433.1h70.5V256.5h49.2l5.2-59.1h-54.4c0 0-22.1 0-33.7 0-13.9 2.8-19.5 16.3-19.5 10.9 0 38.2 0 v82.9 c0 0-40.2 0-48.8 0 -52.5 0-76.1 23.1-76.1 67.3C211.9 188.8 211.9 197.4 211.9 197.4z”/></svg><!–[if lt IE 9]><em>Facebook</em><![endif]–></a> <a href = ” http://www.linkedin.com/company/infragistics ” target = “blank” “class =” ui-footer__icon-link “><svg viewBox =” 0 0 512 512 “><path d =” M186.4 142.4c0 19-15.3 34.5-34.2 34.5 -18.9 0-34.2-15.4-34.2-34.5 0-19 15.3-34.5 34.2-34.5 c171.1 107.9 186.4 123.4 186.4 142.4 zm181.4 201.3h-57.8V388.1h57.8V201.3zM273.8 201.3h-55.4V388.1h55.4c0 0-69.3 0-98 0-26.3 12.1-41.9 35.2-41.9 21.3 0 31.5 15 31.5 41.9 0 26.9 0 98 h57.5c0 0 0-68.2 0-118.3 0-50-28.3-74.2-68-74.2 -39.6 0-56.3 30.9 v-25.2h273.8z “/></svg><!–[if lt IE 9]><em>LinkedIn</em><![endif]–></a> <a href =” https://www.youtube.com/user/Infragistics? annotation_id = annotation_3135485231 & amp;feature = iv & amp;src_vid = c8dSiyWIfEo & amp;sub_confirmation = 1 “target =” blank “” class = “ui-footer__icon-link”><svg viewBox = “0 0 512 512”><path d = “M422.6 193。6c-5.3-45.3-23.3-51.6-59-54 -50.8-3.5-164.3-3.5-215.1 0 -35.7 2.4-53.7 8.7-59 54-4 33.6 91.1 0 124.8 5.3 45.3 23.3 51.6 59 54 50.9 3.5 164.3 3.5 215.1 0 35.7-2.4 53.7-8.7 59-54c426.6 284.8 426.6 227.3 422.6 193.6zM222.2 303.4v-94.6l90.7 47.3L222.2 303″/></svg><!– [如果lt IE 9]><em>YouTube</em><![endif]–> </a> </div> <div class = “ui-footer __wrap — max-width ui-footer — clearfix”> <div class = “ui-footer _col-四分之一ui-footer__col-block”> <div class = “ui-footer__menu”> <ul class = “ui-footer__menu-list”> <li class = “ui-footer__menu-list-item”> <div class = “ui-footer__category”>Products</div> <ul> <li><a class = “menu__link” href = “/products/ultimate”>Developers</a> </li> <li><a class = “menu__link” href = “/产品/indigo-studio”>UX专业人员 </a> </li><a class = “menu __link” href = “/business-teams”> 业务团队 </a> </li><a class = “menu __ link” href = “/how-to-buy/product-pricing”> 查看全部 </a> </li><a class = “menu __link” href = “/free-downloads”> 免费试用版 </a> </li> </ul> </li> </ul> </div> </div> <!– 列2 –> <div class = “ui-footer __col-四分之一ui-footer __col-block”> <div class = “ui-footer __menu”> <ul class = “ui-footer __menu-list”> <li class = “ui-footer__ menu-list-item”> <div class = “ui-footer__category”> 学习 & amp;支持 </div> <ul> <li><a class = “menu __link” href = “/Support”> 帮助 & amp;API文档 </a> </li><a class = “menu __link” href = “/community/blogs”> 博客 </a> </li><a class = “menu __link” href = “/support/chat”> 技术支持聊天 </a> </li><a class = “menu__link” href = “/community/forums”> 论坛 </a> </li><a class = “menu__link” href = “/my-account/submit-support-request”> 提交请求 </a> </li> </ul> </div> <!– 列3 –> <div class = “ui-footer __col-四分之一ui-footer __col-block”> <div class = “ui-footer __menu”> <ul class = “ui-footer __menu-list”> <li class = “ui-footer __ menu-list-item”> <div class = “ui-footer __category”> 我的帐户 </div> <ul> <li><a class = “menu _link” href = ” https://customer.infragistics.com/subscriptions “> 管理我的订阅 </a> </li><a class = “menu __link” href = “/my-account/submit-support-request”> 支持请求 </a> </li> </ul> </div> </div> <!– 列4 –> <div class = “ui-footer__col-四分之一ui-footer__col-block”> <div class = “ui-footer__menu”> <ul class = “ui-footer__menu-list”> <li class = “ui-footer __ menu-list-item”> <div class = “ui-footer __category”> 公司 </div> <ul> <li><a class = “menu __link” href = “/关于我们”> 关于我们 </a> </li><a class = “menu__link” href = “/关于-我们/careers”> 职业 </a> </li><a class = “menu__link” href = “/legal/terms-of-use”>Legal</a> </li> <li><a class = “menu__link” href = “/events”>News & amp; 活动 </a> </li><a class = “menu __link” href = “/关于-美国/alliances-partners”> 合作伙伴 </a> </li> </ul> </div> </div> </div> <div class = “ui-footer__wrap ui-footer — clearfix ui-footer — legal” style = “text-align: 中心;”> <div class = “ui-footer __menu”> <ul class = “ui-footer __ menu-list”> <li class = “ui-footer __ menu-list-项目显示 — 内联块” style = “margin: 0 5px; 显示: 内联块;”><a class = “menu __link” href = “/legal/privacy”> 隐私政策 </a> </li> <li class = “ui-footer __ menu-list-item display — inline-block” style = “margin: 0 5px;显示: inline-block;”><a class = “menu __link” href = “/legal/cookie-policy”>Cookies</a> </li> <li class = “ui-footer__ menu-list-item显示 — inlIne-block “style =” margin: 0 5px; 显示: 内联块;”><a class =” menu __link “href =”/legal/terms-of-use “> 使用条款 </a></li> </ul> </div> </footer> </div> <div class =” content-fragment-footer “> </div> </div> </div> </div> </div> <div class =” layout-footer “> </div> </div> </div> <div class =” footer-fragments-footer “> </div> <script type =” text/javascript “> // <![CDATA[ if!($.telligent.evolution.contentFragmentContainers) { $.telligent.evolution.contentFragmentContainers = {}; } $.telligent.evolution.contentFragmentContainers.header = 新的contentfragmentcontainercallback (‘ctl01_page’,新函数 (‘,’,’exterrerr’ ‘ctl02_ctl01_ctl00._Docallback (mode \’:\ ‘authValue \’:\ ‘参数,回调,上下文,errorCallback);’),’AuthorizationCookie’);// ]]> </script> <script type =” text/javascript “> // 当用户从文档顶部向下滚动20px时,显示按钮jQuery(document).ready(function() { var offset = 100; var duration = 300;jQuery(window).scroll(function() { if (jQuery(this).scrollTop() > offset) { jQuery(“.btn — back-to-top “).fadeIn(duration); } else { jQuery(“.btn — back-to-top “).fadeOut(duration); } }); jQuery(“.btn — back-to-top “).click(function(event) { event.preventDefault(); jQuery(” html, body “).animate({scrollTop: 0},duration); 返回false; }); </script> <script type =” text/javascript “> // <![CDATA[ if!($.telligent.evolution.contentFragmentContainers) { $.telligent.evolution.contentFragmentContainers = {}; } $.telligent.evolution.contentFragmentContainers.page = 新建ContentFragmentContainerCustomCallback(‘ ctl02_page ‘,new’,new ‘,new,’ ‘ctl02_ctl02_ctl00._Docallback (mode \’:\ ‘authValue \’:\ ‘参数,回调,上下文,errorCallback);’,’AuthorizationCookie’); // ]]> </script> <script type =” text/javascript “> // <![CDATA[ if!($.telligent.evolution.contentFragmentContainers) { $.telligent.evolution.contentFragmentContainers = {}; } $.telligent.evolution.contentFragmentContainers.footer = 新的contentfragmentcontainercallback (‘ ctl02_ctl03_page ‘,new’,新函数 (‘,’ ‘ctl02_ctl03_ctl00._Docallback (mode \’:\ ‘authValue \’:\ ‘参数,回调,上下文,errorCallback);’,’AuthorizationCookie’); // ]]> </script> <script type =” text/javascript “> // <![CDATA[ window.ctl02_ctl01_ctl00 = 新的Telligent_CallbackManager(‘ ctl02_ctl00 ‘,’ ctl02 $ ctl01 $ ctl00 ‘,’ ctl01 ‘); //]> </script> <script type =” text/javascript “> <//![CDATA[ window.ctl02_ctl02_ctl00 = 新建Telligent_CallbackManager(‘ ctl02_ctl02_ctl00 ‘,’ ctl02 $ ctl00 ‘,’ ctl01 ‘); //]> </script> <script type =” text/javascript “> <//![CDATA[ window.ctl02_ctl03_ctl00 = 新建Telligent_CallbackManager(‘ ctl02_ctl03_ctl00 ‘,’ ctl02 $ ctl03 $ ctl00 ‘,’ ctl01 ‘); //]> </script> </form> <!– <rdf:RDF xmlns:rdf =” http:// www.w3.org/1999/02/22-rdf-syntax-ns # “xmlns:dc =” http://purl.org/dc/elements/ 1.1/”xmlns:trackback =” http://madskills.com/public/xml/rss/module/trackback/ “> <rdf: 描述rdf: 关于 =” https://www.infragistics.com/community/blogs/b/infragistics/posts/ 网络研讨会-recap-introduction-to-xaml-wpf-数据绑定-用于现代化-桌面-应用程序 “dc:identifier =” https://www.infragistics.com/community/blogs/b/infragistics/posts/ 网络研讨会-recap-introduction-to-xaml-wpf-数据绑定-用于现代化-桌面-应用程序 “dc:title =” 网络研讨会回顾: XAML (WPF) 简介和用于现代化桌面应用程序的数据绑定 “trackback:ping =” https://www.infragistics.com/community/blogs/b/infragistics/trackback?WeblogPostId= 523377 ” /> </rdf:RDF> –> </body> </html & gt