<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Boxing XAML]]></title><description><![CDATA[Boxing XAML]]></description><link>https://boxingxaml.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 23:04:37 GMT</lastBuildDate><atom:link href="https://boxingxaml.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Putting XAML in a Box and Sealing It Up]]></title><description><![CDATA[In the early days of my programming career, under CP/M on 8-bit systems, user interfaces were defined in plain text files. These files described the layout of input/output screens— field positions, labels, attributes—for display on VDUs connected via...]]></description><link>https://boxingxaml.hashnode.dev/putting-xaml-in-a-box-and-sealing-it-up</link><guid isPermaLink="true">https://boxingxaml.hashnode.dev/putting-xaml-in-a-box-and-sealing-it-up</guid><category><![CDATA[xaml]]></category><category><![CDATA[CPM]]></category><category><![CDATA[desktop]]></category><category><![CDATA[HTML5]]></category><category><![CDATA[CSS]]></category><dc:creator><![CDATA[John Robert Allen]]></dc:creator><pubDate>Thu, 25 Dec 2025 13:37:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1766754222021/bdc46aad-abf1-4fb4-b845-706235a7bdfb.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the early days of my programming career, under CP/M on 8-bit systems, user interfaces were defined in plain text files. These files described the layout of input/output screens— field positions, labels, attributes—for display on VDUs connected via RS-232. The runtime code parsed the file, transmitted ASCII sequences over the serial line, and the terminal hardware handled the rest. There was no complex painting logic, no message pumps, no invalidation regions; the interaction was direct, minimal, and entirely under my control.</p>
<p>When I later encountered Charles Petzold's Programming Windows (the Windows 3.0 era edition), the resource script (.RC) files evoked an immediate sense of familiarity. Here again was a declarative, text-based description of UI elements—dialogs, controls, positions— compiled into resources and managed by the system. By defining modeless dialogs in resources and creating them as child windows of the main window, I could position reusable panels anywhere within the application window. The dialog manager and the Windows kernel assumed responsibility for clipping, redrawing, and input routing. Only the data heavy portions, such as tabular displays, required owner-drawn controls. Most of the heavy lifting was delegated to the operating system, preserving both simplicity and performance.</p>
<p>This pattern felt like a natural evolution of the earlier text-file approach: separate the description of the interface from the procedural logic, and let a capable runtime do the repetitive work.</p>
<p>When Windows 7 arrived with WPF and XAML, the excitement was profound. Declarative markup now supported rich vector graphics, data binding, animation, and hardware acceleration—all within a full .NET desktop application. No longer confined to the limitations of GDI or Win32 controls, I could craft sophisticated client/server interfaces that ran natively, accessed the full system, and installed cleanly without browser dependencies. For several years, every new project began in XAML; it seemed the future had arrived.</p>
<p>Then came Windows 8 and UWP. The sandboxing, restricted APIs, and enforced touchfirst navigation patterns felt like a regression. Familiar desktop paradigms—overlapping windows, complex modal workflows—were discouraged or outright difficult. The platform appeared to dictate design rather than enable it. I chose to ignore UWP and continued building with WPF, hoping Microsoft would reconsider.</p>
<p>Xamarin's emergence, later evolving into .NET MAUI, deepened the concern. Although it reused XAML syntax, fundamental differences in namespaces, binding behaviours, and control capabilities fragmented the ecosystem. Meanwhile, visible investment in WPF stalled; roadmaps and conferences focused elsewhere. For several years, the future of rich desktop XAML development appeared uncertain.</p>
<p>Throughout this period, I deliberately avoided HTML, CSS, and JavaScript. The idea of requiring users to run applications inside a browser—introducing security restrictions, rendering inconsistencies, and deployment complexities—held no appeal when native WPF delivered superior performance and integration.</p>
<p>So now in 2025, I finally opened that long ignored box. The modern web platform astonished me. CSS now offers Flexbox, Grid, container queries, and cascade layers that rival or exceed WPF's layout capabilities. JavaScript has matured with stable standards, unparalleled performance, and a vast ecosystem of battle-tested solutions. WebAssembly enables near-native computation while integrating seamlessly with the DOM. Progressive Web Apps provide installation, offline support, and automatic updates without sacrificing reach.</p>
<p>All the declarative principles I valued in XAML—separation of structure, presentation, and behaviour—exist here, refined by an enormous global community. The innovations born from billions of users and millions of developers have produced tools and patterns that feel both familiar and exhilaratingly advanced.</p>
<p>The slight remaining reservation concerns the layers of abstraction: browser engines, networking stacks, security sandboxes, and rendering pipelines stand between code and pixels. Yet these layers purchase universality, security, and capability that no single desktop framework can match. After forty-five years of building reusable modules—DLLs, containers, APIs—I now see the web platform as the foundation for future work. XAML, WPF, MAUI, and WinUl 3 have been carefully placed in a box, acknowledged with gratitude for the years of productive service, and the lid sealed.</p>
<p>The path ahead lies with HTML, CSS, JavaScript, and WebAssembIy—open, evolving, and boundless. The future feels exceptionally bright.</p>
]]></content:encoded></item></channel></rss>