{"id":2288,"date":"2024-02-28T17:53:24","date_gmt":"2024-02-28T16:53:24","guid":{"rendered":"https:\/\/www.ituziast.com\/?p=2288"},"modified":"2026-02-13T10:38:29","modified_gmt":"2026-02-13T09:38:29","slug":"opensilver-2-1-xaml-and-fsharp","status":"publish","type":"post","link":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/","title":{"rendered":"OpenSilver 2.1: A Framework for Modern Business Web Apps That Support F#"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><a href=\"\/index.php\/tag\/opensilver\/\" target=\"_blank\" rel=\"noreferrer noopener\">OpenSilver<\/a>, the open-source framework known for breathing new life into legacy Silverlight applications, has taken a significant leap forward with the latest releases. The last version (<strong>OpenSilver 2.1<\/strong>) has been released on February 6, 2024. This update marks a pivotal moment, showcasing OpenSilver&#8217;s evolution from a tool primarily used for migration purposes to a robust platform capable of crafting modern web-based business applications. At the heart of <a href=\"https:\/\/opensilver.net\/announcements\/2-1\/?ituziast\" target=\"_blank\" rel=\"noreferrer noopener\">OpenSilver 2.1<\/a> lies its most notable new feature: F# support, opening up a realm of possibilities for developers favoring this functional programming language.<\/p>\n\n\n\n<div id=\"ezoic-pub-ad-placeholder-172\"><\/div>\n<script>\n    ezstandalone.cmd.push(function() {\n        ezstandalone.showAds(172);\n    });\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TABLE OF CONTENT<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#heading-1\">Beyond Legacy: Embracing the Future with OpenSilver 2.1<\/a><\/li>\n\n\n\n<li><a href=\"#heading-2\">Key Features of OpenSilver 2.1<\/a><\/li>\n\n\n\n<li><a href=\"#heading-3\">Getting Hands-On: Building a Simple App with OpenSilver 2.1<\/a>\n<ul class=\"wp-block-list\">\n<li><a href=\"#heading-3-1\">STEP 1. Setting Up the Environment<\/a><\/li>\n\n\n\n<li><a href=\"#heading-3-2\">STEP 2. Creating a New Project<\/a>\n<ul class=\"wp-block-list\">\n<li><a href=\"#heading-3-2-1\">OpenSilver&#8217;s Visual Studio Solution Anatomy<\/a>\n<ul class=\"wp-block-list\">\n<li><a href=\"#heading-3-2-1-1\">Application Project<\/a><\/li>\n\n\n\n<li><a href=\"#heading-3-2-1-2\">Browser Project<\/a><\/li>\n\n\n\n<li><a href=\"#heading-3-2-1-3\">Simulator Project<\/a><\/li>\n\n\n\n<li><a href=\"#heading-3-2-1-4\">OpenSilver Class Library (.NET Standard Class Library)<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"#heading-3-3\">STEP 3. Exploring the Toolkit<\/a><\/li>\n\n\n\n<li><a href=\"#heading-3-4\">STEP 4. Building the App<\/a><\/li>\n\n\n\n<li><a href=\"#heading-3-5\">STEP 5. Running Your Application<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"#heading-4\">A Bright Future with OpenSilver 2.1<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"heading-1\">Beyond Legacy: Embracing the Future with OpenSilver 2.1<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In the past years, OpenSilver has been recognized as the go-to solution for businesses looking to migrate their outdated Silverlight applications to the modern web. However, with the introduction of OpenSilver 2.1, and by announcement of the <a href=\"https:\/\/opensilver.net\/whats-new\/?ituziast\" target=\"_blank\" rel=\"noreferrer noopener\">OpenSilver roadmap<\/a> for the following period, the narrative is shifting. This version underscores the framework&#8217;s versatility, not just as a migration tool but as a foundation for developing contemporary web applications from scratch.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"heading-2\">Key Features of OpenSilver 2.1<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">At the beginning of this article, I already mentioned the headline feature. it is undoubtedly the introduction of F# support, catering to a broader developer (small but vibrant and cohesive) community and embracing the functional programming paradigm. <\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb09870dcc&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb09870dcc\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"691\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-2-1-xaml-and-fsharp-1024x691.jpg\" alt=\"OpenSilver 2.1 - Visual Studio OpenSilver Project with F# language\" class=\"wp-image-2292 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-2-1-xaml-and-fsharp-1024x691.jpg 1024w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-2-1-xaml-and-fsharp-300x202.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-2-1-xaml-and-fsharp-768x518.jpg 768w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-2-1-xaml-and-fsharp.jpg 1030w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">OpenSilver 2.1 &#8211; Visual Studio 2022 new project that allows F# developers to use their favorite language as a code-behind for the XAML dialect.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Besides the main feature, other enhancements go in line with the statement that OpenSilver is ready for building modern business web applications from scratch. Some of the enhancements that the OpenSilver 2.1 brings are:<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;galleryId&quot;:&quot;6a3bb09870f86&quot;}\" data-wp-interactive=\"core\/gallery\" class=\"wp-block-gallery has-nested-images columns-3 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb09871195&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb09871195\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"760\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"2327\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-pie-chart-1-1024x760.jpg\" alt=\"Pie Chart - Microsoft Silverlight Toolkit - OpenSilver implementation\" class=\"wp-image-2327 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-pie-chart-1-1024x760.jpg 1024w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-pie-chart-1-300x223.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-pie-chart-1-768x570.jpg 768w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-pie-chart-1-80x60.jpg 80w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-pie-chart-1.jpg 1215w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Pie Chart &#8211; Microsoft Silverlight Toolkit &#8211; OpenSilver implementation<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb09871474&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb09871474\" class=\"wp-block-image size-large is-style-default wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"737\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"2300\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-themes-1024x737.jpg\" alt=\"Microsoft Silverlight Toolkit - OpenSilver implementation \/ Themes\" class=\"wp-image-2300 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-themes-1024x737.jpg 1024w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-themes-300x216.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-themes-768x553.jpg 768w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-themes.jpg 1252w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Themes Browser &#8211; Microsoft Silverlight Toolkit &#8211; OpenSilver implementation<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb098716b7&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb098716b7\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"733\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"2299\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-1024x733.jpg\" alt=\"Microsoft Silverlight Toolkit - OpenSilver Implementation\" class=\"wp-image-2299 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-1024x733.jpg 1024w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-300x215.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation-768x550.jpg 768w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/microsoft-silverlight-toolkit-opensilver-implementation.jpg 1252w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Nested Grids &#8211; Microsoft Silverlight Toolkit &#8211; OpenSilver Implementation<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Comprehensive Implementation of the Microsoft Silverlight Toolkit<\/strong><br>OpenSilver 2.1 fully integrates this <a href=\"https:\/\/sl-toolkit-samples.azurewebsites.net\/?ituziast\">toolkit<\/a>, ensuring developers have a rich set of tools for creating sophisticated user interfaces and complex functionalities. With this one, OpenSilver 2.1 has become a great framework for building new business web applications with advanced features.<\/li>\n\n\n\n<li><strong>Improved Performance and Compatibility<\/strong><br>Efforts have been made to enhance the performance of applications developed with OpenSilver, alongside better compatibility with various browsers and devices.<\/li>\n\n\n\n<li><strong>Extended Library Support<\/strong><br>A broader range of .NET libraries is now supported, making it easier for developers to incorporate existing code and leverage the .NET ecosystem.<\/li>\n\n\n\n<li><strong>Enhanced Development Tools<\/strong><br>OpenSilver 2.1 offers improved tools for debugging and testing, streamlining the development process and helping developers deliver polished applications more efficiently.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>changelog<\/strong> with the technical details can be found on the <a href=\"https:\/\/opensilver.net\/announcements\/2-1\/?ituziast\" target=\"_blank\" rel=\"noreferrer noopener\">announcement blog post<\/a> on the OpenSilver website.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"heading-3\">Getting Hands-On: Building a Simple App with OpenSilver 2.1<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To illustrate the practicality and ease of use of OpenSilver 2.1, let&#8217;s walk through creating a simple application using the Microsoft Silverlight Toolkit, now fully integrated into this version.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-3-1\">STEP 1. Setting Up the Environment<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Begin by installing the OpenSilver Visual Studio extension (VSIX) that can be <a href=\"https:\/\/forms.opensilver.net\/download.aspx?ituziast\" target=\"_blank\" rel=\"noreferrer noopener\">downloaded<\/a> from the OpenSilver website. This extension provides the templates and tools needed to start your project. <br>After you successfully download the OpenSilver SDK (<strong>?<\/strong> You will need at least Visual Studio 2019 (16.11+) or Visual Studio 2022) you will be redirected to a &#8220;Thank you&#8221; page with recommendations and tips that I would recommend to read it even before you create the first OpenSilver project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When creating a new Visual Studio project, you&#8217;ll find &#8220;OpenSilver&#8221; listed under the &#8220;Project Type&#8221; dropdown menu. This allows you to easily select and filter through all the available OpenSilver templates.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb098725cb&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb098725cb\" class=\"wp-block-image size-full wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"687\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/open-silver-creating-new-project-visual-studio.jpg\" alt=\"OpenSilver Templates for Visual Studio\" class=\"wp-image-2319 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/open-silver-creating-new-project-visual-studio.jpg 1024w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/open-silver-creating-new-project-visual-studio-300x201.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/open-silver-creating-new-project-visual-studio-768x515.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">OpenSilver Templates for Visual Studio<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-3-2\">STEP 2. Creating a New Project<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Select &#8220;Create a new project,&#8221; and then choose the OpenSilver application template. Give your project a name and location, and then click &#8220;Create.&#8221;<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb098728a3&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb098728a3\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"684\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-fsharp-project-in-visual-studio-1024x684.jpg\" alt=\"Crating OpenSilver F# project in Visual Studio\" class=\"wp-image-2324 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-fsharp-project-in-visual-studio-1024x684.jpg 1024w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-fsharp-project-in-visual-studio-300x200.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-fsharp-project-in-visual-studio-768x513.jpg 768w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-fsharp-project-in-visual-studio.jpg 1028w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Crating OpenSilver F# project in Visual Studio<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"heading-3-2-1\">OpenSilver&#8217;s Visual Studio Solution Anatomy<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The created Visual Studio solution will contain three VS projects:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Application Project<\/li>\n\n\n\n<li>Browser Project<\/li>\n\n\n\n<li>Simulator Project<\/li>\n<\/ul>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb09872c4e&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb09872c4e\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"711\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-visual-studio-project-anathomy-1024x711.jpeg\" alt=\"OpenSilver Visual Studio Solution Anatomy\" class=\"wp-image-2338 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-visual-studio-project-anathomy-1024x711.jpeg 1024w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-visual-studio-project-anathomy-300x208.jpeg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-visual-studio-project-anathomy-768x533.jpeg 768w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-visual-studio-project-anathomy.jpeg 1075w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">OpenSilver Visual Studio Solution Anatomy<\/figcaption><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"heading-3-2-1-1\">Application Project<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">This is the core project where most of your application development will take place. It contains the XAML files for defining the UI, C#, or VB and since OpenSilver 2.1 F# as well, code-behind files for logic, and any other resources your application needs (images, data files, etc.). This project compiles into a WebAssembly module, enabling it to run in modern browsers.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb09872f94&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb09872f94\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"352\" height=\"474\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-VS-solution.jpg\" alt=\"New OpenSilver Visual Studio Solution \" class=\"wp-image-2343 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-VS-solution.jpg 352w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-VS-solution-223x300.jpg 223w\" sizes=\"(max-width: 352px) 100vw, 352px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">New OpenSilver Visual Studio Solution based on the  OpenSilver F# Application template<\/figcaption><\/figure>\n<\/div>\n\n\n<h5 class=\"wp-block-heading\" id=\"heading-3-2-1-2\">Browser Project<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">This project is used to host your OpenSilver application on a web server. It&#8217;s essentially a web project that serves your OpenSilver app, along with any necessary API endpoints, static files, or server-side logic you may require. This project is responsible for serving the compiled WebAssembly and other resources to the client&#8217;s browser. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is a Blazor project that is used as a container under which the UI and logic implemented in the OpenSilver application and class libraries will run.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"heading-3-2-1-3\">Simulator Project<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">A desktop application that makes debugging your OpenSilver application much easier and faster.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb09873291&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb09873291\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"768\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/Opensilver-simulator-2-desktop-application.jpg\" alt=\"OpenSilver Simulator 2 Desktop Application\" class=\"wp-image-2353 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/Opensilver-simulator-2-desktop-application.jpg 1024w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/Opensilver-simulator-2-desktop-application-300x225.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/Opensilver-simulator-2-desktop-application-768x576.jpg 768w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/Opensilver-simulator-2-desktop-application-678x509.jpg 678w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/Opensilver-simulator-2-desktop-application-326x245.jpg 326w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/Opensilver-simulator-2-desktop-application-80x60.jpg 80w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Easier debugging with OpenSilver Simulator 2<\/figcaption><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"heading-3-2-1-4\">OpenSilver Class Library (.NET Standard Class Library)<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">For larger or more complex applications, you might have one or more OpenSilver class libraries (.NET Standard class libraries). These are used to separate application logic or data models from the UI layer, making your codebase more modular and easier to maintain. These libraries can be shared across different .NET environments, including OpenSilver, making them ideal for reuse. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb0987353b&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb0987353b\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"368\" height=\"485\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/open-silver-class-libraries-1.jpg\" alt=\"OpenSilver class libraries\" class=\"wp-image-2350 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/open-silver-class-libraries-1.jpg 368w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/open-silver-class-libraries-1-228x300.jpg 228w\" sizes=\"(max-width: 368px) 100vw, 368px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">OpenSilver class libraries<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Also, because OpenSilver supports C#, VB, and F#, the OpenSilver class libraries can be of a different language that gives additional flexibility to support different demography of the development team(s) on complex projects with heterogenous skills of the team members.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-3-3\">STEP 3. Exploring the Toolkit<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">With your project set up, explore the Microsoft Silverlight Toolkit components available in OpenSilver 2.1. You&#8217;ll find a variety of controls and utilities designed to enhance your application&#8217;s UI and functionality.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can find many samples in the <a href=\"https:\/\/sl-toolkit-samples.azurewebsites.net\/?ituziast\" target=\"_blank\" rel=\"noreferrer noopener\">Gallery for the Microsoft Silverlight Toolkit<\/a>. All those advanced controls are an integral part of OpenSilver 2.1 meaning that no need of addition additional libraries to cover the need for advanced UI controls for business apps. OpenSilver integrated UI controls for which there is a great example in the <a href=\"https:\/\/opensilverdemos.azurewebsites.net\/opensilvershowcase\/release\/?20240130#\/XAML_Controls?ituziast\" target=\"_blank\" rel=\"noreferrer noopener\">OpenSilver Showcase\/Gallery page<\/a> together with the comprehensive implementation of the <a href=\"https:\/\/sl-toolkit-samples.azurewebsites.net\/?ituziast\" target=\"_blank\" rel=\"noreferrer noopener\">Silverlight T<\/a>oolkit, OpenSilver can answer the large number of needs and challenges of the modern business web applications with advanced features.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;galleryId&quot;:&quot;6a3bb098736e9&quot;}\" data-wp-interactive=\"core\/gallery\" class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb09873929&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb09873929\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"740\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"2379\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-showcase-gallery-1024x740.jpg\" alt=\"OpenSilver showcase \/ gallery\" class=\"wp-image-2379 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-showcase-gallery-1024x740.jpg 1024w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-showcase-gallery-300x217.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-showcase-gallery-768x555.jpg 768w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-showcase-gallery.jpg 1250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">OpenSilver showcase\/gallery &#8211; Samples for the panels and the UI controls which are integral parts of OpenSilver<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb09873b7b&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb09873b7b\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"740\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"2380\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/Microsoft-silverlight-toolkit-control-groups-1024x740.jpg\" alt=\"Microsoft Silverlight Toolkit - groups of controls\" class=\"wp-image-2380 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/Microsoft-silverlight-toolkit-control-groups-1024x740.jpg 1024w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/Microsoft-silverlight-toolkit-control-groups-300x217.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/Microsoft-silverlight-toolkit-control-groups-768x555.jpg 768w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/Microsoft-silverlight-toolkit-control-groups.jpg 1250w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Microsoft Silverlight Toolkit &#8211; groups of controls<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-3-4\">STEP 4. Building the App<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For a basic example, I added a TabControl from the Microsoft Silverlight Toolkit to my main page in which I added a TextBox and a Button controls. I set the &#8220;Hello from F#&#8221; text as the default value for the TextBox. This showcases how I can use Silverlight Toolkit controls within an OpenSilver application with an F# as a code behind it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I copied the UI and the code-behind from the XAML Controls Galery for the TextBox control that I added to the TabControl and a Button that should trigger the display of the javascript alert dialog with text from the TextBox.<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-b65736f1987743cdecde8effbbca0b0e\"><code>&lt;UserControl xmlns=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\/presentation\" xmlns:x=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\" xmlns:controls=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls\" x:Class=\"System.Windows.Controls.Samples.TabControlSample\"&gt;\n    &lt;StackPanel&gt;\n        &lt;Grid&gt;\n            &lt;Grid.RowDefinitions&gt;\n                &lt;RowDefinition Height=\"*\"\/&gt;\n                &lt;RowDefinition Height=\"Auto\"\/&gt;\n                &lt;RowDefinition Height=\"*\"\/&gt;\n            &lt;\/Grid.RowDefinitions&gt;\n            &lt;controls:TabControl Margin=\"5\" Grid.Row=\"0\"&gt;\n                &lt;controls:TabItem Header=\"One\"&gt;\n                    &lt;TextBox Name=\"TextBoxName\" Text=\"Hello from F#\" Width=\"120\" Foreground=\"#FF444444\" Background=\"White\" Margin=\"0,10,0,0\"\/&gt;\n                &lt;\/controls:TabItem&gt;\n                &lt;controls:TabItem&gt;\n                    &lt;controls:TabItem.Header&gt;\n                        &lt;TextBlock Text=\"Two\" ToolTipService.ToolTip=\"This tab has nothing\"\/&gt;\n                    &lt;\/controls:TabItem.Header&gt;\n                &lt;\/controls:TabItem&gt;\n                &lt;controls:TabItem&gt;\n                    &lt;controls:TabItem.Header&gt;\n                        &lt;Ellipse Width=\"20\" Height=\"20\" Fill=\"Blue\"\/&gt;\n                    &lt;\/controls:TabItem.Header&gt;\n                    &lt;TextBlock Text=\"Tab #3's Content\" FontSize=\"20\"\/&gt;\n                &lt;\/controls:TabItem&gt;\n                &lt;controls:TabItem&gt;\n                    &lt;controls:TabItem.Header&gt;\n                        &lt;StackPanel Orientation=\"Horizontal\"&gt;\n                            &lt;TextBlock Text=\"Four\"\/&gt;\n                            &lt;Ellipse Width=\"20\" Height=\"20\" Fill=\"Blue\"\/&gt;\n                        &lt;\/StackPanel&gt;\n                    &lt;\/controls:TabItem.Header&gt;\n                    &lt;Ellipse Width=\"20\" Height=\"20\" Fill=\"Blue\"\/&gt;\n                &lt;\/controls:TabItem&gt;\n                &lt;controls:TabItem&gt;\n                    &lt;controls:TabItem.Header&gt;\n                        &lt;Button Content=\"Show Me!\" Margin=\"0,10,0,0\" Click=\"OKButton_Click\" HorizontalAlignment=\"Center\"\/&gt;\n                    &lt;\/controls:TabItem.Header&gt;\n                    &lt;ScrollViewer&gt;\n                        &lt;StackPanel&gt;\n                            &lt;TextBlock Text=\"Stack Panel with TextBlock and Ellipse\" FontSize=\"18\"\/&gt;\n                            &lt;Ellipse Width=\"20\" Height=\"20\" Fill=\"Blue\"\/&gt;\n                        &lt;\/StackPanel&gt;\n                    &lt;\/ScrollViewer&gt;\n                &lt;\/controls:TabItem&gt;\n            &lt;\/controls:TabControl&gt;\n        &lt;\/Grid&gt;\n    &lt;\/StackPanel&gt;\n&lt;\/UserControl&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The update of the code-behind (F# simple event handler) is adding the &#8220;OnClick&#8221; event handler that runs on button click gets the text from the TextBox and displays it in the JavaScript Alert dialog.<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-269916f0ed6abf44a66140a6e0ba7d9e\"><code>member private this.OKButton_Click(sender : obj, e : RoutedEventArgs) =\n    MessageBox.Show(\"Text from the TextBox: \" + this.TextBoxName.Text) |&gt; ignore<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Since the <a href=\"https:\/\/www.ituziast.com\/index.php\/2023\/10\/16\/opensilver-2-0-launches-with-vb-net-support-and-over-100-new-features\/\" target=\"_blank\" rel=\"noreferrer noopener\">OpenSilver 2.0<\/a> (official <a href=\"https:\/\/opensilver.net\/announcements\/2-0\/?ituziast\" target=\"_blank\" rel=\"noreferrer noopener\">announcement of the release 2.0<\/a>) there is a live preview of the XAML code during the design time.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb098740af&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb098740af\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"555\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-Design-time-Live-XAML-Preview-1024x555.jpg\" alt=\"OpenSilver design time live XAML preview\" class=\"wp-image-2376 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-Design-time-Live-XAML-Preview-1024x555.jpg 1024w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-Design-time-Live-XAML-Preview-300x163.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-Design-time-Live-XAML-Preview-768x416.jpg 768w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-Design-time-Live-XAML-Preview-1536x832.jpg 1536w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-Design-time-Live-XAML-Preview.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Live XAML preview during the design time<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"heading-3-5\">STEP 5. Running Your Application<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">After setting up your UI, run the application. OpenSilver compiles your code to WebAssembly, enabling it to run directly in the browser or the OpenSilver Simulator, depending on the VS project you choose to run.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I run my test application in the browser and then in the Simulator as well and hola! My &#8220;Hello from F#&#8221; test app is working.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;galleryId&quot;:&quot;6a3bb09874220&quot;}\" data-wp-interactive=\"core\/gallery\" class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb09874460&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb09874460\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1023\" height=\"825\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"2386\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-run-in-simulator.jpg\" alt=\"OpenSilver application run in a web browser\" class=\"wp-image-2386 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-run-in-simulator.jpg 1023w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-run-in-simulator-300x242.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-run-in-simulator-768x619.jpg 768w\" sizes=\"(max-width: 1023px) 100vw, 1023px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">OpenSilver application run in a web browser<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a3bb0987470b&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a3bb0987470b\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1023\" height=\"840\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" data-id=\"2387\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-app-run-in-browser.jpg\" alt=\"OpenSilver application run in the Simulator\" class=\"wp-image-2387 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-app-run-in-browser.jpg 1023w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-app-run-in-browser-300x246.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/OpenSilver-app-run-in-browser-768x631.jpg 768w\" sizes=\"(max-width: 1023px) 100vw, 1023px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">OpenSilver application run in the Simulator<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<hr class=\"wp-block-separator aligncenter has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">A great jump start for creating a new OpenSilver project is the <a href=\"https:\/\/doc.opensilver.net\/documentation\/general\/getting-started-tour.html?ituziast\" target=\"_blank\" rel=\"noreferrer noopener\">Getting Started article<\/a> after you check the <a href=\"https:\/\/opensilver.net\/announcements\/2-1\/?ituziast\">announcement article<\/a> for OpenSilver 2.1.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"heading-4\">A Bright Future with OpenSilver 2.1<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The release of OpenSilver 2.1 continues to keep the pace and solid dynamics of improving the framework. In the last release, the OpenSilver team proved once more their dedication to providing alternatives and additional options for the development community. This time they said hello to the small but very vibrant and cohesive F# community. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With its support for F#, full integration of the Microsoft Silverlight Toolkit, and an array of enhanced features, OpenSilver 2.1 is set to make its mark on the web development landscape that allows developers who are familiar with XAML to use one more language (F#) for their code-behind logic. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Considering the latest releases of <a href=\"https:\/\/opensilver.net\/?ituziast\" target=\"_blank\" rel=\"noreferrer noopener\">OpenSilver<\/a>, what was announced in the <a href=\"https:\/\/opensilver.net\/whats-new\/?ituziast\" target=\"_blank\" rel=\"noreferrer noopener\">roadmap<\/a>, and the pace, and dynamics of releasing improvements, I can conclude that OpenSilver is expanding its origins as a migration tool, positioning itself as a platform for developing both new and modern web-based business applications.<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\">OpenSilver&#8217;s positioning as a framework for modern business web apps in its latest 2.1 release has support for F# language.<\/div>\n<p> <a class=\"mh-excerpt-more\" href=\"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/\" title=\"OpenSilver 2.1: A Framework for Modern Business Web Apps That Support F#\">[&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":2332,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[180,201,202,203,108,188,182],"coauthors":[237],"class_list":["post-2288","post","type-post","status-publish","format-standard","has-post-thumbnail","category-programming","tag-blazor","tag-c","tag-f","tag-microsoft-silverlight-toolkit","tag-opensilver","tag-vb-net","tag-webassembly"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\r\n<title>OpenSilver 2.1: A Framework for Modern Business Web Apps<\/title>\r\n<meta name=\"description\" content=\"OpenSilver&#039;s positioning as a framework for modern business web apps in its latest 2.1 release has support for F# language.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"OpenSilver 2.1: A Framework for Modern Business Web Apps\" \/>\r\n<meta property=\"og:description\" content=\"OpenSilver&#039;s positioning as a framework for modern business web apps in its latest 2.1 release has support for F# language.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/\" \/>\r\n<meta property=\"og:site_name\" content=\"ITuziast\" \/>\r\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ITuziast\" \/>\r\n<meta property=\"article:published_time\" content=\"2024-02-28T16:53:24+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2026-02-13T09:38:29+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-2-1-featured-image-1.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\r\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"Vasil Buraliev\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vasil Buraliev\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/\"},\"author\":{\"name\":\"Vasil Buraliev\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#\\\/schema\\\/person\\\/130bb5eec2cbd028401314ed54444064\"},\"headline\":\"OpenSilver 2.1: A Framework for Modern Business Web Apps That Support F#\",\"datePublished\":\"2024-02-28T16:53:24+00:00\",\"dateModified\":\"2026-02-13T09:38:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/\"},\"wordCount\":1576,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/opensilver-2-1-featured-image-1.jpg\",\"keywords\":[\"Blazor\",\"C#\",\"F#\",\"Microsoft Silverlight Toolkit\",\"OpenSilver\",\"VB.NET\",\"WebAssembly\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/\",\"name\":\"OpenSilver 2.1: A Framework for Modern Business Web Apps\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/opensilver-2-1-featured-image-1.jpg\",\"datePublished\":\"2024-02-28T16:53:24+00:00\",\"dateModified\":\"2026-02-13T09:38:29+00:00\",\"description\":\"OpenSilver's positioning as a framework for modern business web apps in its latest 2.1 release has support for F# language.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/opensilver-2-1-featured-image-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/opensilver-2-1-featured-image-1.jpg\",\"width\":1920,\"height\":1080,\"caption\":\"OpenSilver 2.1 - more functional flavor, and ready for building new modern business web apps\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/02\\\/28\\\/opensilver-2-1-xaml-and-fsharp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.ituziast.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OpenSilver 2.1: A Framework for Modern Business Web Apps That Support F#\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#website\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/\",\"name\":\"ITuziast\",\"description\":\"Bits and Bytes of Technology\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.ituziast.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#organization\",\"name\":\"ITuziast\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/ituziast-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/ituziast-logo.png\",\"width\":512,\"height\":512,\"caption\":\"ITuziast\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/ITuziast\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#\\\/schema\\\/person\\\/130bb5eec2cbd028401314ed54444064\",\"name\":\"Vasil Buraliev\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/871178133536e7151a83aea1254ec5d8cbc7c65e130c60a9ca24f4c17abc79a7?s=96&d=mm&r=ge659aee84094ba8a6be390aa8ce3002f\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/871178133536e7151a83aea1254ec5d8cbc7c65e130c60a9ca24f4c17abc79a7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/871178133536e7151a83aea1254ec5d8cbc7c65e130c60a9ca24f4c17abc79a7?s=96&d=mm&r=g\",\"caption\":\"Vasil Buraliev\"},\"description\":\"Consultant for project management and software development with a background in bespoke software development and 22+ years of professional experience in designing software systems and managing IT projects mainly for the public sector. Seeking to use analytic and management skills as a consultant in large-scale IT projects.\",\"sameAs\":[\"http:\\\/\\\/www.vbu.mk\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/vasbu\\\/\"],\"url\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/author\\\/vasil_buraliev_w1kde5ij\\\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OpenSilver 2.1: A Framework for Modern Business Web Apps","description":"OpenSilver's positioning as a framework for modern business web apps in its latest 2.1 release has support for F# language.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/","og_locale":"en_US","og_type":"article","og_title":"OpenSilver 2.1: A Framework for Modern Business Web Apps","og_description":"OpenSilver's positioning as a framework for modern business web apps in its latest 2.1 release has support for F# language.","og_url":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/","og_site_name":"ITuziast","article_publisher":"https:\/\/www.facebook.com\/ITuziast","article_published_time":"2024-02-28T16:53:24+00:00","article_modified_time":"2026-02-13T09:38:29+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-2-1-featured-image-1.jpg","type":"image\/jpeg"}],"author":"Vasil Buraliev","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Vasil Buraliev","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/#article","isPartOf":{"@id":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/"},"author":{"name":"Vasil Buraliev","@id":"https:\/\/www.ituziast.com\/#\/schema\/person\/130bb5eec2cbd028401314ed54444064"},"headline":"OpenSilver 2.1: A Framework for Modern Business Web Apps That Support F#","datePublished":"2024-02-28T16:53:24+00:00","dateModified":"2026-02-13T09:38:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/"},"wordCount":1576,"commentCount":0,"publisher":{"@id":"https:\/\/www.ituziast.com\/#organization"},"image":{"@id":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-2-1-featured-image-1.jpg","keywords":["Blazor","C#","F#","Microsoft Silverlight Toolkit","OpenSilver","VB.NET","WebAssembly"],"articleSection":["Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/","url":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/","name":"OpenSilver 2.1: A Framework for Modern Business Web Apps","isPartOf":{"@id":"https:\/\/www.ituziast.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/#primaryimage"},"image":{"@id":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-2-1-featured-image-1.jpg","datePublished":"2024-02-28T16:53:24+00:00","dateModified":"2026-02-13T09:38:29+00:00","description":"OpenSilver's positioning as a framework for modern business web apps in its latest 2.1 release has support for F# language.","breadcrumb":{"@id":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/#primaryimage","url":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-2-1-featured-image-1.jpg","contentUrl":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/02\/opensilver-2-1-featured-image-1.jpg","width":1920,"height":1080,"caption":"OpenSilver 2.1 - more functional flavor, and ready for building new modern business web apps"},{"@type":"BreadcrumbList","@id":"https:\/\/www.ituziast.com\/index.php\/2024\/02\/28\/opensilver-2-1-xaml-and-fsharp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.ituziast.com\/"},{"@type":"ListItem","position":2,"name":"OpenSilver 2.1: A Framework for Modern Business Web Apps That Support F#"}]},{"@type":"WebSite","@id":"https:\/\/www.ituziast.com\/#website","url":"https:\/\/www.ituziast.com\/","name":"ITuziast","description":"Bits and Bytes of Technology","publisher":{"@id":"https:\/\/www.ituziast.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.ituziast.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.ituziast.com\/#organization","name":"ITuziast","url":"https:\/\/www.ituziast.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.ituziast.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2020\/09\/ituziast-logo.png","contentUrl":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2020\/09\/ituziast-logo.png","width":512,"height":512,"caption":"ITuziast"},"image":{"@id":"https:\/\/www.ituziast.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ITuziast"]},{"@type":"Person","@id":"https:\/\/www.ituziast.com\/#\/schema\/person\/130bb5eec2cbd028401314ed54444064","name":"Vasil Buraliev","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/871178133536e7151a83aea1254ec5d8cbc7c65e130c60a9ca24f4c17abc79a7?s=96&d=mm&r=ge659aee84094ba8a6be390aa8ce3002f","url":"https:\/\/secure.gravatar.com\/avatar\/871178133536e7151a83aea1254ec5d8cbc7c65e130c60a9ca24f4c17abc79a7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/871178133536e7151a83aea1254ec5d8cbc7c65e130c60a9ca24f4c17abc79a7?s=96&d=mm&r=g","caption":"Vasil Buraliev"},"description":"Consultant for project management and software development with a background in bespoke software development and 22+ years of professional experience in designing software systems and managing IT projects mainly for the public sector. Seeking to use analytic and management skills as a consultant in large-scale IT projects.","sameAs":["http:\/\/www.vbu.mk","https:\/\/www.linkedin.com\/in\/vasbu\/"],"url":"https:\/\/www.ituziast.com\/index.php\/author\/vasil_buraliev_w1kde5ij\/"}]}},"_links":{"self":[{"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/posts\/2288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/comments?post=2288"}],"version-history":[{"count":92,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/posts\/2288\/revisions"}],"predecessor-version":[{"id":3504,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/posts\/2288\/revisions\/3504"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/media\/2332"}],"wp:attachment":[{"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/media?parent=2288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/categories?post=2288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/tags?post=2288"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/coauthors?post=2288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}