<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Winui3 C++ Tutorial &#8211; FoxDevelop</title>
	<atom:link href="https://www.foxdevelop.com/category/winui3-c-tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.foxdevelop.com</link>
	<description>Independent Software Developer Studio</description>
	<lastBuildDate>Tue, 07 Jul 2026 08:01:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://www.foxdevelop.com/wp-content/uploads/2026/05/fox-svgrepo-com-1.png</url>
	<title>Winui3 C++ Tutorial &#8211; FoxDevelop</title>
	<link>https://www.foxdevelop.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WinUI 3 C++ Controls Guide &#8211; InfoBar Message Bar</title>
		<link>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-infobar-message-bar/</link>
					<comments>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-infobar-message-bar/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Tue, 07 Jul 2026 08:01:08 +0000</pubDate>
				<category><![CDATA[Winui3 C++ Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=4045</guid>

					<description><![CDATA[An info bar is a colored text box control. It displays different color styles to indicate success, warning, error and other types of messages. The info bar can be closed ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">An info bar is a colored text box control. It displays different color styles to indicate success, warning, error and other types of messages. The info bar can be closed after being shown, and its display state can be controlled programmatically in backend code.</p>



<figure class="wp-block-video"><video height="480" style="aspect-ratio: 848 / 480;" width="848" controls src="https://www.foxdevelop.com/wp-content/uploads/2026/07/Infobar.mp4"></video></figure>



<p class="wp-block-paragraph">First add three InfoBar controls in XAML</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">    <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"10"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"InfoBar Message Bar Demo:"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"16"</span>/&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">InfoBar</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"InfoSuccess"</span> <span class="hljs-attr">Severity</span>=<span class="hljs-string">"Success"</span> <span class="hljs-attr">Title</span>=<span class="hljs-string">"Success"</span> <span class="hljs-attr">Message</span>=<span class="hljs-string">"Operation completed successfully."</span> <span class="hljs-attr">IsOpen</span>=<span class="hljs-string">"False"</span>/&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">InfoBar</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"InfoWarning"</span> <span class="hljs-attr">Severity</span>=<span class="hljs-string">"Warning"</span> <span class="hljs-attr">Title</span>=<span class="hljs-string">"Warning"</span> <span class="hljs-attr">Message</span>=<span class="hljs-string">"Unsaved changes detected."</span> <span class="hljs-attr">IsOpen</span>=<span class="hljs-string">"False"</span>/&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">InfoBar</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"InfoError"</span> <span class="hljs-attr">Severity</span>=<span class="hljs-string">"Error"</span> <span class="hljs-attr">Title</span>=<span class="hljs-string">"Error"</span> <span class="hljs-attr">Message</span>=<span class="hljs-string">"Failed to load file, please retry."</span> <span class="hljs-attr">IsOpen</span>=<span class="hljs-string">"False"</span>/&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Orientation</span>=<span class="hljs-string">"Horizontal"</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"10"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Show Success Info"</span> <span class="hljs-attr">Click</span>=<span class="hljs-string">"BtnShowInfoSuccess_Click"</span>/&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Show Warning Info"</span> <span class="hljs-attr">Click</span>=<span class="hljs-string">"BtnShowInfoWarning_Click"</span>/&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Show Error Info"</span> <span class="hljs-attr">Click</span>=<span class="hljs-string">"BtnShowInfoError_Click"</span>/&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span></code></span></pre>


<p class="wp-block-paragraph">Then add three buttons and bind click events. Toggle the visibility state of each info bar inside the event handlers.</p>


<pre class="wp-block-code"><span><code class="hljs language-cpp"><span class="hljs-keyword">void</span> winrt::AppWinui::implementation::MainWindow::BtnShowInfoSuccess_Click(
winrt::Windows::Foundation::IInspectable <span class="hljs-keyword">const</span>&amp; sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs <span class="hljs-keyword">const</span>&amp; e)
{
    InfoSuccess().IsOpen(<span class="hljs-literal">true</span>);
    InfoWarning().IsOpen(<span class="hljs-literal">false</span>);
    InfoError().IsOpen(<span class="hljs-literal">false</span>);
}

<span class="hljs-keyword">void</span> winrt::AppWinui::implementation::MainWindow::BtnShowInfoWarning_Click(
winrt::Windows::Foundation::IInspectable <span class="hljs-keyword">const</span>&amp; sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs <span class="hljs-keyword">const</span>&amp; e)
{
    InfoSuccess().IsOpen(<span class="hljs-literal">false</span>);
    InfoWarning().IsOpen(<span class="hljs-literal">true</span>);
    InfoError().IsOpen(<span class="hljs-literal">false</span>);
}

<span class="hljs-keyword">void</span> winrt::AppWinui::implementation::MainWindow::BtnShowInfoError_Click(
winrt::Windows::Foundation::IInspectable <span class="hljs-keyword">const</span>&amp; sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs <span class="hljs-keyword">const</span>&amp; e)
{
    InfoSuccess().IsOpen(<span class="hljs-literal">false</span>);
    InfoWarning().IsOpen(<span class="hljs-literal">false</span>);
    InfoError().IsOpen(<span class="hljs-literal">true</span>);
}
</code></span></pre>


<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="903" height="503" src="https://www.foxdevelop.com/wp-content/uploads/2026/07/o-6.gif" alt="" class="wp-image-2885"/></figure>


<p>WinUI 3 C++ Controls Guide &#8211; InfoBar Message Bar</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-infobar-message-bar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://www.foxdevelop.com/wp-content/uploads/2026/07/Infobar.mp4" length="2214474" type="video/mp4" />

			</item>
		<item>
		<title>WinUI 3 C++ Controls Guide &#8211; Floating Popup Windows (Popup Notification)</title>
		<link>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-floating-popup-windows-popup-notification/</link>
					<comments>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-floating-popup-windows-popup-notification/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Tue, 07 Jul 2026 07:43:02 +0000</pubDate>
				<category><![CDATA[Winui3 C++ Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=4013</guid>

					<description><![CDATA[First we demonstrate Popup In XAML, add a button to open this Popup on click. We also declare a Popup hidden by default, which will only appear after clicking the ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">First we demonstrate Popup</p>



<p class="wp-block-paragraph">In XAML, add a button to open this Popup on click. We also declare a Popup hidden by default, which will only appear after clicking the button.</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">    <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"24"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Top"</span>&gt;</span>

        <span class="hljs-comment">&lt;!-- Raw Popup Root Container --&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">Popup</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"MainPopup"</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"320"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"180"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"White"</span> <span class="hljs-attr">BorderBrush</span>=<span class="hljs-string">"Gray"</span> <span class="hljs-attr">BorderThickness</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"8"</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"16"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Custom Popup Content"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"18"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"This is raw Popup base container"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Close Popup"</span> <span class="hljs-attr">Click</span>=<span class="hljs-string">"BtnClosePopup_Click"</span>/&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">Popup</span>&gt;</span>

        <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Open Raw Popup Container"</span> <span class="hljs-attr">Click</span>=<span class="hljs-string">"BtnOpenPopup_Click"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Left"</span>
        <span class="hljs-attr">ToolTipService.ToolTip</span>=<span class="hljs-string">"Open base raw popup layer"</span>/&gt;</span>

    <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span></code></span></pre>


<p class="wp-block-paragraph">Then implement the click event <code>BtnOpenPopup_Click</code> to show the Popup. The tag <code>&lt;Popup x:Name="MainPopup" Width="320" Height="180"> ...&lt;/Popup></code> creates a floating window hidden by default. Inside it there is a button <code>&lt;Button Content="Close Popup" Click="BtnClosePopup_Click"/></code> that closes the parent Popup when clicked.</p>



<figure class="wp-block-video"><video height="480" style="aspect-ratio: 848 / 480;" width="848" controls src="https://www.foxdevelop.com/wp-content/uploads/2026/07/FGGHGDFGDF.mp4"></video></figure>



<p class="wp-block-paragraph">Press F12 to auto-generate the two button click event handlers</p>



<p class="wp-block-paragraph">.H Header File</p>


<pre class="wp-block-code"><span><code class="hljs language-cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">pragma</span> once</span>

<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"MainWindow.g.h"</span></span>

<span class="hljs-keyword">namespace</span> winrt::AppWinui::implementation
{
    <span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">MainWindow</span> :</span> MainWindowT&lt;MainWindow&gt;
    {
    <span class="hljs-keyword">public</span>:
        MainWindow();

        <span class="hljs-function"><span class="hljs-keyword">int32_t</span> <span class="hljs-title">MyProperty</span><span class="hljs-params">()</span></span>;
        <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">MyProperty</span><span class="hljs-params">(<span class="hljs-keyword">int32_t</span> value)</span></span>;

        <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">BtnOpenPopup_Click</span><span class="hljs-params">(winrt::Windows::Foundation::IInspectable <span class="hljs-keyword">const</span>&amp; sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs <span class="hljs-keyword">const</span>&amp; e)</span></span>;
        <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">BtnClosePopup_Click</span><span class="hljs-params">(winrt::Windows::Foundation::IInspectable <span class="hljs-keyword">const</span>&amp; sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs <span class="hljs-keyword">const</span>&amp; e)</span></span>;
    };
}

<span class="hljs-keyword">namespace</span> winrt::AppWinui::factory_implementation
{
    <span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">MainWindow</span> :</span> MainWindowT&lt;MainWindow, implementation::MainWindow&gt;
    {
    };
}
</code></span></pre>

<pre class="wp-block-code"><span><code class="hljs language-cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"pch.h"</span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"MainWindow.xaml.h"</span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">if</span> __has_include(<span class="hljs-meta-string">"MainWindow.g.cpp"</span>)</span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"MainWindow.g.cpp"</span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">endif</span></span>

<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;winrt/Windows.Foundation.h&gt;</span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;winrt/Windows.Globalization.h&gt;</span></span>

<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;winrt/Windows.UI.h&gt; //Windows::UI::Colors</span></span>


<span class="hljs-comment">// Global namespace aliases to fix missing class / RoutedEventArgs errors</span>
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> winrt;
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> Windows::Foundation;
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> Windows::Foundation::Collections;
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> Microsoft::UI::Xaml;
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> Microsoft::UI::Xaml::Controls;
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> Microsoft::UI::Xaml::Controls::Primitives;


<span class="hljs-comment">// To learn more about WinUI, the WinUI project structure,</span>
<span class="hljs-comment">// and more about our project templates, see: http://aka.ms/winui-project-info.</span>

<span class="hljs-keyword">namespace</span> winrt::AppWinui::implementation
{
    <span class="hljs-function"><span class="hljs-keyword">int32_t</span> <span class="hljs-title">MainWindow::MyProperty</span><span class="hljs-params">()</span>
    </span>{
        <span class="hljs-keyword">throw</span> hresult_not_implemented();
    }

    <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">MainWindow::MyProperty</span><span class="hljs-params">(<span class="hljs-keyword">int32_t</span> <span class="hljs-comment">/* value */</span>)</span>
    </span>{
        <span class="hljs-keyword">throw</span> hresult_not_implemented();
    }

    MainWindow::MainWindow()
    {
        InitializeComponent();
    }
}


<span class="hljs-keyword">void</span> winrt::AppWinui::implementation::MainWindow::BtnOpenPopup_Click(winrt::Windows::Foundation::IInspectable <span class="hljs-keyword">const</span>&amp; sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs <span class="hljs-keyword">const</span>&amp; e)
{
    MainPopup().IsOpen(<span class="hljs-literal">true</span>);
}

<span class="hljs-keyword">void</span> winrt::AppWinui::implementation::MainWindow::BtnClosePopup_Click(winrt::Windows::Foundation::IInspectable <span class="hljs-keyword">const</span>&amp; sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs <span class="hljs-keyword">const</span>&amp; e)
{
    MainPopup().IsOpen(<span class="hljs-literal">false</span>);
}
</code></span></pre>


<p class="wp-block-paragraph">WinUI 3 C++ Controls Guide &#8211; Floating Popup Windows (Popup Notification)</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-floating-popup-windows-popup-notification/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://www.foxdevelop.com/wp-content/uploads/2026/07/FGGHGDFGDF.mp4" length="1375983" type="video/mp4" />

			</item>
		<item>
		<title>WinUI 3 C++ Controls Guide &#8211; Navigation &#038; Tabs</title>
		<link>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-navigation-tabs/</link>
					<comments>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-navigation-tabs/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Tue, 07 Jul 2026 07:35:42 +0000</pubDate>
				<category><![CDATA[Winui3 C++ Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=3997</guid>

					<description><![CDATA[Navigation and tab-related controls in WinUI 3 Frame Page navigation frame (hosts Page to implement page jumps)Page Independent page carrierNavigationView Sidebar navigation viewNavigationViewItem Navigation menu itemNavigationViewItemHeader Navigation group titleNavigationViewItemSeparator Navigation ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Navigation and tab-related controls in WinUI 3</p>



<p class="wp-block-paragraph">Frame Page navigation frame (hosts Page to implement page jumps)<br>Page Independent page carrier<br>NavigationView Sidebar navigation view<br>NavigationViewItem Navigation menu item<br>NavigationViewItemHeader Navigation group title<br>NavigationViewItemSeparator Navigation divider line<br>TabView Multi-tab container<br>TabViewItem Single tab page<br>Pivot Horizontal sliding tab control<br>PivotItem Pivot page item<br>SplitView Side drawer split layout view<br>SplitViewPaneInfo SplitView sidebar configuration<br>BreadcrumbBar Path breadcrumb navigation bar<br>BreadcrumbBarItem Breadcrumb path node</p>



<p class="wp-block-paragraph">We have covered sidebar components before, and we have also used Frame, Page and other navigation-related controls. Below I will demonstrate the controls starting from TabView.</p>



<p class="wp-block-paragraph">The following video demonstrates how these controls work, including the left sidebar and tab pages.</p>



<figure class="wp-block-video"><video height="480" style="aspect-ratio: 848 / 480;" width="848" controls src="https://www.foxdevelop.com/wp-content/uploads/2026/07/bandicam-2026-07-03-14-27-35-609.mp4"></video></figure>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-meta">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">Window</span>
    <span class="hljs-attr">x:Class</span>=<span class="hljs-string">"AppWinui.MainWindow"</span>
    <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span>
    <span class="hljs-attr">xmlns:x</span>=<span class="hljs-string">"http://schemas.microsoft.com/winfx/2006/xaml"</span>
    <span class="hljs-attr">xmlns:local</span>=<span class="hljs-string">"using:AppWinui"</span>
    <span class="hljs-attr">xmlns:d</span>=<span class="hljs-string">"http://schemas.microsoft.com/expression/blend/2008"</span>
    <span class="hljs-attr">xmlns:mc</span>=<span class="hljs-string">"http://schemas.openxmlformats.org/markup-compatibility/2006"</span>
    <span class="hljs-attr">mc:Ignorable</span>=<span class="hljs-string">"d"</span>
    <span class="hljs-attr">Title</span>=<span class="hljs-string">"AppWinui"</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">Grid</span>&gt;</span>
        <span class="hljs-comment">&lt;!-- SplitView SplitViewPaneInfo --&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">SplitView</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"DemoSplitView"</span>
                   <span class="hljs-attr">DisplayMode</span>=<span class="hljs-string">"CompactInline"</span>
                   <span class="hljs-attr">CompactPaneLength</span>=<span class="hljs-string">"52"</span>
                   <span class="hljs-attr">OpenPaneLength</span>=<span class="hljs-string">"260"</span>
                   <span class="hljs-attr">IsPaneOpen</span>=<span class="hljs-string">"True"</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- SplitView Side Pane --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">SplitView.Pane</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"10"</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Side Menu"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"16"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"BtnShowTabView"</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Open TabView Demo"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"BtnShowPivot"</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Open Pivot Demo"</span>/&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">SplitView.Pane</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- SplitView Main Content Area --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">SplitView.Content</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">Grid</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Grid.RowDefinitions</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">RowDefinition</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"Auto"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">RowDefinition</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"*"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">Grid.RowDefinitions</span>&gt;</span>

                    <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"MainContentPanel"</span> <span class="hljs-attr">Grid.Row</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"8"</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"20"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Top"</span>&gt;</span>
             
                        <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"TabView Multi-Tab Demo"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"20"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">TabView</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"DemoTabView"</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">TabViewItem</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Tab One"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"12"</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"8"</span>&gt;</span>
                                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Content inside Tab 1"</span>/&gt;</span>
                                    <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Tab 1 Sample Button"</span>/&gt;</span>
                                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">TabViewItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">TabViewItem</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Tab Two"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"#E8F4FF"</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"12"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"6"</span>&gt;</span>
                                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Styled content inside Tab 2"</span>/&gt;</span>
                                <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">TabViewItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">TabViewItem</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Tab Three"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">TextBox</span> <span class="hljs-attr">PlaceholderText</span>=<span class="hljs-string">"Input box inside Tab 3"</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"300"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">TabViewItem</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">TabView</span>&gt;</span>

                        <span class="hljs-comment">&lt;!-- Pivot / PivotItem --&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Pivot Horizontal Sliding Demo"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"20"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">Pivot</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"DemoPivot"</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">PivotItem</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Slide Page A"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"12"</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Horizontal slide page A content"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">PivotItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">PivotItem</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Slide Page B"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"#FFF7E6"</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"12"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"6"</span>&gt;</span>
                                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Styled slide page B content"</span>/&gt;</span>
                                <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">PivotItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">PivotItem</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Slide Page C"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">ToggleSwitch</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Toggle option on slide page C"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"12"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">PivotItem</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">Pivot</span>&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">Grid</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">SplitView.Content</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">SplitView</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">Grid</span>&gt;</span>
    
<span class="hljs-tag">&lt;/<span class="hljs-name">Window</span>&gt;</span>
</code></span></pre>


<p class="wp-block-paragraph">WinUI 3 C++ Controls Guide &#8211; Navigation &#038; Tabs</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-navigation-tabs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://www.foxdevelop.com/wp-content/uploads/2026/07/bandicam-2026-07-03-14-27-35-609.mp4" length="842907" type="video/mp4" />

			</item>
		<item>
		<title>WinUI 3 C++ Controls Guide &#8211; Layout Containers</title>
		<link>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-layout-containers/</link>
					<comments>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-layout-containers/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Tue, 07 Jul 2026 07:23:53 +0000</pubDate>
				<category><![CDATA[Winui3 C++ Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=3975</guid>

					<description><![CDATA[Grid Grid layout (row &#38; column division)StackPanel Stack panel (horizontal / vertical arrangement)UniformGrid Equal-size uniform gridRelativePanel Relative positioning panel (anchor controls to each other)Canvas Absolute coordinate drawing canvasDockPanel Dock panel ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Grid Grid layout (row &amp; column division)<br>StackPanel Stack panel (horizontal / vertical arrangement)<br>UniformGrid Equal-size uniform grid<br>RelativePanel Relative positioning panel (anchor controls to each other)<br>Canvas Absolute coordinate drawing canvas<br>DockPanel Dock panel (fill layout for top/bottom/left/right)<br>ScrollViewer Scrollable container (scroll when content overflows)<br>Border Border container (rounded corners / border / background)<br>Viewbox Auto-scaling container<br>GroupBox Group box (SDK 1.4 and above, collapsible)<br>Expander Collapsible expand panel<br>ContentPresenter Content template host<br>ItemsControl Basic non-virtualized list container</p>



<p class="wp-block-paragraph">All above controls are layout-related. Below is a simple demo of their usage. Everything is rendered in XAML only. If you need backend C++ interaction, refer to previous lessons for implementation. There are too many controls to cover each one in full detail here.</p>



<figure class="wp-block-video"><video height="520" style="aspect-ratio: 872 / 520;" width="872" controls src="https://www.foxdevelop.com/wp-content/uploads/2026/07/Video-20260703115422.mp4"></video></figure>



<p class="wp-block-paragraph">Below is our complete XAML code</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-meta">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">Window</span>
    <span class="hljs-attr">x:Class</span>=<span class="hljs-string">"AppWinui.MainWindow"</span>
    <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span>
    <span class="hljs-attr">xmlns:x</span>=<span class="hljs-string">"http://schemas.microsoft.com/winfx/2006/xaml"</span>
    <span class="hljs-attr">xmlns:local</span>=<span class="hljs-string">"using:AppWinui"</span>
    <span class="hljs-attr">xmlns:d</span>=<span class="hljs-string">"http://schemas.microsoft.com/expression/blend/2008"</span>
    <span class="hljs-attr">xmlns:mc</span>=<span class="hljs-string">"http://schemas.openxmlformats.org/markup-compatibility/2006"</span>
    <span class="hljs-attr">mc:Ignorable</span>=<span class="hljs-string">"d"</span>
    <span class="hljs-attr">Title</span>=<span class="hljs-string">"AppWinui"</span>&gt;</span>

    <span class="hljs-comment">&lt;!-- Global scroll container for overflow content --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">ScrollViewer</span> <span class="hljs-attr">VerticalScrollBarVisibility</span>=<span class="hljs-string">"Auto"</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"16"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"30"</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 1. Grid - Grid Layout (Row &amp; Column Division) --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Expander</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Grid - Grid Layout (Row <span class="hljs-symbol">&amp;amp;</span> Column Division)"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">Grid</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"450"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"200"</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"#F0F0F0"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Grid.RowDefinitions</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">RowDefinition</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"Auto"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">RowDefinition</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"*"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">Grid.RowDefinitions</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Grid.ColumnDefinitions</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ColumnDefinition</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"120"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ColumnDefinition</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"*"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">Grid.ColumnDefinitions</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Grid.Row</span>=<span class="hljs-string">"0"</span> <span class="hljs-attr">Grid.Column</span>=<span class="hljs-string">"0"</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"LightBlue"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Top Left Cell"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Grid.Row</span>=<span class="hljs-string">"0"</span> <span class="hljs-attr">Grid.Column</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"LightGreen"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Top Right Cell"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Grid.Row</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">Grid.Column</span>=<span class="hljs-string">"0"</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"LightPink"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Bottom Left Cell"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Grid.Row</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">Grid.Column</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"LightGoldenrodYellow"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Bottom Right Cell"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">Grid</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Expander</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 2. StackPanel - Stack Panel (Vertical / Horizontal Alignment) --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Expander</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"StackPanel - Stack Panel (Vertical / Horizontal Alignment)"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"10"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Vertical Stack (Default):"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"6"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Vertical Button 1"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Vertical Button 2"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Vertical Button 3"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>

                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Horizontal Stack (Orientation=Horizontal):"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Orientation</span>=<span class="hljs-string">"Horizontal"</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"10"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">TextBox</span> <span class="hljs-attr">PlaceholderText</span>=<span class="hljs-string">"Input Box A"</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"140"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">TextBox</span> <span class="hljs-attr">PlaceholderText</span>=<span class="hljs-string">"Input Box B"</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"140"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Confirm"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Expander</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 3. RelativePanel - Relative Anchoring Layout --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Expander</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"RelativePanel - Relative Anchoring Layout"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">RelativePanel</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"480"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"200"</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"#F5F5F5"</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"txtTitle"</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Title Text"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"20"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBox</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"txtInput"</span> <span class="hljs-attr">RelativePanel.Below</span>=<span class="hljs-string">"txtTitle"</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"340"</span> <span class="hljs-attr">PlaceholderText</span>=<span class="hljs-string">"Input box below title"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Submit"</span> <span class="hljs-attr">RelativePanel.RightOf</span>=<span class="hljs-string">"txtInput"</span> <span class="hljs-attr">RelativePanel.AlignBottomWith</span>=<span class="hljs-string">"txtInput"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Footer description text"</span> <span class="hljs-attr">RelativePanel.Below</span>=<span class="hljs-string">"txtInput"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,10,0,0"</span> <span class="hljs-attr">Foreground</span>=<span class="hljs-string">"Gray"</span>/&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">RelativePanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Expander</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 4. Canvas - Absolute Coordinate Canvas --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Expander</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Canvas - Absolute Coordinate Canvas"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">Canvas</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"350"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"200"</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"#EEEEEE"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Rectangle</span> <span class="hljs-attr">Canvas.Left</span>=<span class="hljs-string">"30"</span> <span class="hljs-attr">Canvas.Top</span>=<span class="hljs-string">"30"</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"80"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"80"</span> <span class="hljs-attr">Fill</span>=<span class="hljs-string">"CornflowerBlue"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Ellipse</span> <span class="hljs-attr">Canvas.Left</span>=<span class="hljs-string">"140"</span> <span class="hljs-attr">Canvas.Top</span>=<span class="hljs-string">"60"</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"90"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"90"</span> <span class="hljs-attr">Fill</span>=<span class="hljs-string">"DarkOrange"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Canvas.Left</span>=<span class="hljs-string">"40"</span> <span class="hljs-attr">Canvas.Top</span>=<span class="hljs-string">"140"</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Fixed coordinate text"</span>/&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">Canvas</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Expander</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 5. Border - Border Container (Rounded / Border / Background) --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Expander</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Border - Border Container (Rounded Corner / Border / Background)"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"320"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"160"</span>
                        <span class="hljs-attr">Background</span>=<span class="hljs-string">"LightSkyBlue"</span>
                        <span class="hljs-attr">BorderBrush</span>=<span class="hljs-string">"DarkBlue"</span>
                        <span class="hljs-attr">BorderThickness</span>=<span class="hljs-string">"3"</span>
                        <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Container with rounded corners <span class="hljs-symbol">&amp;amp;</span> border"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"15"</span>/&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Expander</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 6. Viewbox - Auto Scale Container --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Expander</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Viewbox - Auto Scale Container"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">Viewbox</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"260"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"120"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Orientation</span>=<span class="hljs-string">"Horizontal"</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"8"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Scale Button 1"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Scale Button 2"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Scale Button 3"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">Viewbox</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Expander</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 7. Expander - Collapsible Expand Panel --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Expander</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Expander - Collapsible Expand Panel"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"6"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Content displayed after expand"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">CheckBox</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Option A"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">CheckBox</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Option B"</span>/&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Expander</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 8. ContentPresenter - Content Template Host --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Expander</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"ContentPresenter - Content Template Host"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">ContentPresenter</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"300"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"80"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">ContentPresenter.Content</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"LightCoral"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"6"</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"ContentPresenter hosts any child content"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">ContentPresenter.Content</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">ContentPresenter</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Expander</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 9. ItemsControl - Basic Non-Virtualized List Container --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Expander</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"ItemsControl - Basic Non-Virtualized List Container"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">ItemsControl</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"320"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">ItemsControl.Items</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"List Item 1"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,4"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"List Item 2"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,4"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"List Item 3"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,4"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"List Item 4"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,4"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">ItemsControl.Items</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">ItemsControl.ItemTemplate</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">DataTemplate</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"#F0F0F0"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,3"</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"6"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"{Binding}"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">DataTemplate</span>&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">ItemsControl.ItemTemplate</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">ItemsControl</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Expander</span>&gt;</span>

        <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ScrollViewer</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">Window</span>&gt;</span>
</code></span></pre>
<p>WinUI 3 C++ Controls Guide &#8211; Layout Containers</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-layout-containers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://www.foxdevelop.com/wp-content/uploads/2026/07/Video-20260703115422.mp4" length="1047991" type="video/mp4" />

			</item>
		<item>
		<title>WinUI 3 C++ Controls Guide — Date &#038; Color Selection Controls</title>
		<link>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-date-color-selection-controls/</link>
					<comments>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-date-color-selection-controls/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Tue, 07 Jul 2026 07:13:46 +0000</pubDate>
				<category><![CDATA[Winui3 C++ Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=3955</guid>

					<description><![CDATA[Date selection and color selection controls ColorPicker Full color pickerColorSpectrum Color gamut panelColorSlider Single channel slider (RGB/Alpha) ColorPicker Full color pickerColorSpectrum Color gamut panelColorSlider Single channel slider (RGB/Alpha) First create ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Date selection and color selection controls</p>



<figure class="wp-block-video"><video height="480" style="aspect-ratio: 848 / 480;" width="848" controls src="https://www.foxdevelop.com/wp-content/uploads/2026/07/Riqi1.mp4"></video></figure>



<p class="wp-block-paragraph"><br>ColorPicker Full color picker<br>ColorSpectrum Color gamut panel<br>ColorSlider Single channel slider (RGB/Alpha)</p>



<p class="wp-block-paragraph">ColorPicker Full color picker<br>ColorSpectrum Color gamut panel<br>ColorSlider Single channel slider (RGB/Alpha)</p>



<figure class="wp-block-image size-full"><img decoding="async" width="999" height="705" src="https://www.foxdevelop.com/wp-content/uploads/2026/07/image-29.png" alt="" class="wp-image-2848" srcset="https://www.foxdevelop.com/wp-content/uploads/2026/07/image-29.png 999w, https://www.foxdevelop.com/wp-content/uploads/2026/07/image-29-300x212.png 300w, https://www.foxdevelop.com/wp-content/uploads/2026/07/image-29-768x542.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></figure>



<p class="wp-block-paragraph">First create controls in XAML and assign x:Name for backend initialization and value retrieval</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-meta">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">Window</span>
    <span class="hljs-attr">x:Class</span>=<span class="hljs-string">"AppWinui.MainWindow"</span>
    <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span>
    <span class="hljs-attr">xmlns:x</span>=<span class="hljs-string">"http://schemas.microsoft.com/winfx/2006/xaml"</span>
    <span class="hljs-attr">xmlns:local</span>=<span class="hljs-string">"using:AppWinui"</span>
    <span class="hljs-attr">xmlns:d</span>=<span class="hljs-string">"http://schemas.microsoft.com/expression/blend/2008"</span>
    <span class="hljs-attr">xmlns:mc</span>=<span class="hljs-string">"http://schemas.openxmlformats.org/markup-compatibility/2006"</span>
    <span class="hljs-attr">mc:Ignorable</span>=<span class="hljs-string">"d"</span>
    <span class="hljs-attr">Title</span>=<span class="hljs-string">"AppWinui"</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">ScrollViewer</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"30"</span> <span class="hljs-attr">VerticalScrollBarVisibility</span>=<span class="hljs-string">"Auto"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"35"</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- Date &amp; Time Controls Group --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">BorderThickness</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">BorderBrush</span>=<span class="hljs-string">"Gray"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"8"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"6. Date <span class="hljs-symbol">&amp;amp;</span> Time Selection Controls"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,0,0,8"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Orientation</span>=<span class="hljs-string">"Horizontal"</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"15"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Top"</span>&gt;</span>
                        <span class="hljs-comment">&lt;!-- DatePicker --&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"6"</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"DatePicker"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">DatePicker</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"myDatePicker"</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"300"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
                        <span class="hljs-comment">&lt;!-- TimePicker --&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"6"</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"TimePicker"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">TimePicker</span>  <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"myTimePicker"</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"250"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
                        <span class="hljs-comment">&lt;!-- CalendarDatePicker --&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"6"</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"CalendarDatePicker"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">CalendarDatePicker</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"myCdp"</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"180"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>

                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"CalendarView (Full Calendar View)"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">CalendarView</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"480"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"280"</span>&gt;</span>
                        <span class="hljs-comment">&lt;!-- Custom CalendarViewDayItem sample --&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">CalendarView.CalendarViewDayItemStyle</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">Style</span> <span class="hljs-attr">TargetType</span>=<span class="hljs-string">"CalendarViewDayItem"</span>&gt;</span><span class="xml">
                                <span class="hljs-tag">&lt;<span class="hljs-name">Setter</span> <span class="hljs-attr">Property</span>=<span class="hljs-string">"Margin"</span> <span class="hljs-attr">Value</span>=<span class="hljs-string">"2"</span>/&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">Setter</span> <span class="hljs-attr">Property</span>=<span class="hljs-string">"Height"</span> <span class="hljs-attr">Value</span>=<span class="hljs-string">"36"</span>/&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">Setter</span> <span class="hljs-attr">Property</span>=<span class="hljs-string">"Width"</span> <span class="hljs-attr">Value</span>=<span class="hljs-string">"36"</span>/&gt;</span>
                            </span><span class="hljs-tag">&lt;/<span class="hljs-name">Style</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">CalendarView.CalendarViewDayItemStyle</span>&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">CalendarView</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- Color Picker Controls Group --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">BorderThickness</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">BorderBrush</span>=<span class="hljs-string">"Gray"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"8"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"7. Color Selection Controls"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,0,0,8"</span>/&gt;</span>
                    <span class="hljs-comment">&lt;!-- Full ColorPicker (built-in ColorSpectrum + ColorSlider internally) --&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">ColorPicker</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"myColorPicker"</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"420"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"320"</span>/&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>

            <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Get Value"</span> <span class="hljs-attr">Click</span>=<span class="hljs-string">"Button_Click"</span>/&gt;</span>

        <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ScrollViewer</span>&gt;</span>

<span class="hljs-tag">&lt;/<span class="hljs-name">Window</span>&gt;</span>
</code></span></pre>


<p class="wp-block-paragraph">Add a button with Click=&#8221;Button_Click&#8221;, press F12 to generate click event handler</p>



<h4 class="wp-block-heading">Set and Get Values</h4>



<p class="wp-block-paragraph">Set default values inside CPP constructor, retrieve values in button click event</p>


<pre class="wp-block-code"><span><code class="hljs language-cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"pch.h"</span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"MainWindow.xaml.h"</span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">if</span> __has_include(<span class="hljs-meta-string">"MainWindow.g.cpp"</span>)</span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"MainWindow.g.cpp"</span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">endif</span></span>

<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;winrt/Windows.Foundation.h&gt;</span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;winrt/Windows.Globalization.h&gt;</span></span>

<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;winrt/Windows.UI.h&gt; //Windows::UI::Colors</span></span>


<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> winrt;
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> Windows::Globalization;
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> Windows::Foundation;
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> Microsoft::UI::Xaml::Controls;



<span class="hljs-comment">// To learn more about WinUI, the WinUI project structure,</span>
<span class="hljs-comment">// and more about our project templates, see: http://aka.ms/winui-project-info.</span>

<span class="hljs-keyword">namespace</span> winrt::AppWinui::implementation
{
    <span class="hljs-function"><span class="hljs-keyword">int32_t</span> <span class="hljs-title">MainWindow::MyProperty</span><span class="hljs-params">()</span>
    </span>{
        <span class="hljs-keyword">throw</span> hresult_not_implemented();
    }

    <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">MainWindow::MyProperty</span><span class="hljs-params">(<span class="hljs-keyword">int32_t</span> <span class="hljs-comment">/* value */</span>)</span>
    </span>{
        <span class="hljs-keyword">throw</span> hresult_not_implemented();
    }

    MainWindow::MainWindow()
    {
        InitializeComponent();

        <span class="hljs-comment">//set</span>
        Windows::Globalization::Calendar cal;
        <span class="hljs-comment">// Subtract one day to get yesterday</span>
        cal.AddDays(<span class="hljs-number">-1</span>);

        <span class="hljs-comment">// Assign to DatePicker</span>
        myDatePicker().SelectedDate(cal.GetDateTime());

        Windows::Foundation::TimeSpan noonTime = <span class="hljs-built_in">std</span>::chrono::hours(<span class="hljs-number">12</span>) + <span class="hljs-built_in">std</span>::chrono::minutes(<span class="hljs-number">0</span>);
        myTimePicker().SelectedTime(noonTime);

        myCdp().Date(cal.GetDateTime());

        myColorPicker().Color(Windows::UI::Colors::Red());

    }

}


<span class="hljs-keyword">void</span> winrt::AppWinui::implementation::MainWindow::Button_Click(winrt::Windows::Foundation::IInspectable <span class="hljs-keyword">const</span>&amp; sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs <span class="hljs-keyword">const</span>&amp; e)
{
    <span class="hljs-comment">// 1. DatePicker</span>
    winrt::Windows::Foundation::IReference&lt;winrt::Windows::Foundation::DateTime&gt; dateRef = myDatePicker().SelectedDate();
    <span class="hljs-keyword">if</span> (dateRef != <span class="hljs-literal">nullptr</span>)
    {
        <span class="hljs-keyword">auto</span> dt = dateRef.Value();
        <span class="hljs-comment">// dt is DateTime for further processing</span>
    }
   

    <span class="hljs-comment">// 2. TimePicker</span>
    <span class="hljs-keyword">auto</span> timeRef = myTimePicker().SelectedTime();
   

    <span class="hljs-comment">// 3. CalendarDatePicker</span>
    <span class="hljs-keyword">auto</span> cdpRef = myCdp().Date();
   

    <span class="hljs-comment">// 4. ColorPicker</span>
    Windows::UI::Color color = myColorPicker().Color();
    <span class="hljs-built_in">std</span>::<span class="hljs-built_in">wstring</span> colorLog = <span class="hljs-string">L"ColorPicker R="</span> + <span class="hljs-built_in">std</span>::to_wstring(color.R)
        + <span class="hljs-string">L" G="</span> + <span class="hljs-built_in">std</span>::to_wstring(color.G) + <span class="hljs-string">L" B="</span> + <span class="hljs-built_in">std</span>::to_wstring(color.B) + <span class="hljs-string">L"\n"</span>;

    OutputDebugStringW(colorLog.c_str());
}
</code></span></pre>




<p class="wp-block-paragraph">WinUI 3 C++ Controls Guide — Date &amp; Color Selection Controls</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-date-color-selection-controls/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://www.foxdevelop.com/wp-content/uploads/2026/07/Riqi1.mp4" length="2866853" type="video/mp4" />

			</item>
		<item>
		<title>WinUI 3 C++ Controls Guide &#8211; Sliders &#038; Progress Bar Controls</title>
		<link>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-sliders-progress-bar-controls/</link>
					<comments>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-sliders-progress-bar-controls/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Tue, 07 Jul 2026 07:01:43 +0000</pubDate>
				<category><![CDATA[Winui3 C++ Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=3935</guid>

					<description><![CDATA[Progress bars are widely used in projects. WinUI C++ provides several progress bar controls for us to use. Control Name Description Slider Single-value slider RangeSlider Dual thumb range slider (select ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Progress bars are widely used in projects. WinUI C++ provides several progress bar controls for us to use.</p>



<figure class="wp-block-video"><video height="480" style="aspect-ratio: 848 / 480;" width="848" controls src="https://www.foxdevelop.com/wp-content/uploads/2026/07/7月3日-11.mp4"></video></figure>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Control Name</th><th>Description</th></tr></thead><tbody><tr><td>Slider</td><td>Single-value slider</td></tr><tr><td>RangeSlider</td><td>Dual thumb range slider (select start and end range)</td></tr><tr><td>ProgressBar</td><td>Linear progress bar</td></tr><tr><td>ProgressRing</td><td>Circular loading progress ring</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Modify XAML</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-meta">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">Window</span>
    <span class="hljs-attr">x:Class</span>=<span class="hljs-string">"AppWinui.MainWindow"</span>
    <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span>
    <span class="hljs-attr">xmlns:x</span>=<span class="hljs-string">"http://schemas.microsoft.com/winfx/2006/xaml"</span>
    <span class="hljs-attr">xmlns:local</span>=<span class="hljs-string">"using:AppWinui"</span>
    <span class="hljs-attr">xmlns:d</span>=<span class="hljs-string">"http://schemas.microsoft.com/expression/blend/2008"</span>
    <span class="hljs-attr">xmlns:mc</span>=<span class="hljs-string">"http://schemas.openxmlformats.org/markup-compatibility/2006"</span>
    <span class="hljs-attr">mc:Ignorable</span>=<span class="hljs-string">"d"</span>
    <span class="hljs-attr">Title</span>=<span class="hljs-string">"AppWinui"</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">ScrollViewer</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"20"</span> <span class="hljs-attr">VerticalScrollMode</span>=<span class="hljs-string">"Auto"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"32"</span>&gt;</span>
            <span class="hljs-comment">&lt;!-- 1. Slider - Single Value Slider --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"1. Slider (Single Value)"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"16"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span>/&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">Slider</span>
                    <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"SingleSlider"</span>
                    <span class="hljs-attr">Width</span>=<span class="hljs-string">"500"</span>
                    <span class="hljs-attr">Minimum</span>=<span class="hljs-string">"0"</span>
                    <span class="hljs-attr">Maximum</span>=<span class="hljs-string">"100"</span>
                    <span class="hljs-attr">Value</span>=<span class="hljs-string">"50"</span>
                    <span class="hljs-attr">TickPlacement</span>=<span class="hljs-string">"BottomRight"</span>
                    <span class="hljs-attr">TickFrequency</span>=<span class="hljs-string">"10"</span>/&gt;</span>
                <span class="hljs-comment">&lt;!-- Separate TextBlock binding to avoid string concatenation syntax errors --&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Current Value: "</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"14"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Run</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"{x:Bind SingleSlider.Value}"</span>/&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">TextBlock</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>


            <span class="hljs-comment">&lt;!-- 3. ProgressBar - Linear Progress Indicator --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"3. ProgressBar (Linear)"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"16"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span>/&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">ProgressBar</span>
                    <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"LinearProgress"</span>
                    <span class="hljs-attr">Width</span>=<span class="hljs-string">"500"</span>
                    <span class="hljs-attr">Height</span>=<span class="hljs-string">"10"</span>
                    <span class="hljs-attr">Minimum</span>=<span class="hljs-string">"0"</span>
                    <span class="hljs-attr">Maximum</span>=<span class="hljs-string">"100"</span>
                    <span class="hljs-attr">Value</span>=<span class="hljs-string">"65"</span>/&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Progress: "</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"14"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">Run</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"{x:Bind LinearProgress.Value}"</span>/&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">TextBlock</span>&gt;</span>
                <span class="hljs-comment">&lt;!-- Indeterminate loading state --&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">ProgressBar</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"500"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"10"</span> <span class="hljs-attr">IsIndeterminate</span>=<span class="hljs-string">"True"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,8,0,0"</span>/&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Indeterminate Loading State"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"12"</span> <span class="hljs-attr">Foreground</span>=<span class="hljs-string">"#666"</span>/&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 4. ProgressRing - Circular Loading Ring --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Orientation</span>=<span class="hljs-string">"Horizontal"</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"40"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"4. ProgressRing (Determinate)"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"16"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">ProgressRing</span>
                        <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"RingProgress"</span>
                        <span class="hljs-attr">Width</span>=<span class="hljs-string">"60"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"60"</span>
                        <span class="hljs-attr">Minimum</span>=<span class="hljs-string">"0"</span> <span class="hljs-attr">Maximum</span>=<span class="hljs-string">"100"</span> <span class="hljs-attr">Value</span>=<span class="hljs-string">"40"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">Run</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"{x:Bind RingProgress.Value}"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">TextBlock</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"ProgressRing (Loading)"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"16"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">ProgressRing</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"60"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"60"</span> <span class="hljs-attr">IsIndeterminate</span>=<span class="hljs-string">"True"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Loading..."</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span>/&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ScrollViewer</span>&gt;</span>

<span class="hljs-tag">&lt;/<span class="hljs-name">Window</span>&gt;</span>
</code></span></pre>


<p class="wp-block-paragraph">Remove the properties used in the previous lesson from IDL, C++ and .h files</p>



<p class="wp-block-paragraph">Source Code Download</p>



<div class="wp-block-file"><a id="wp-block-file--media-6df7db01-c6c2-45df-9c2b-b39e16293e0b" href="https://www.foxdevelop.com/wp-content/uploads/2026/07/AppWinui-3.zip">AppWinui</a><a href="https://www.foxdevelop.com/wp-content/uploads/2026/07/AppWinui-3.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-6df7db01-c6c2-45df-9c2b-b39e16293e0b">Download</a></div>



<p class="wp-block-paragraph">WinUI 3 C++ Controls Guide &#8211; Sliders &#038; Progress Bar Controls</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-sliders-progress-bar-controls/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://www.foxdevelop.com/wp-content/uploads/2026/07/7月3日-11.mp4" length="1802956" type="video/mp4" />

			</item>
		<item>
		<title>WinUI 3 C++ Controls Guide – List &#038; Collection Views</title>
		<link>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-list-collection-views/</link>
					<comments>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-list-collection-views/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Tue, 07 Jul 2026 06:39:34 +0000</pubDate>
				<category><![CDATA[Winui3 C++ Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=3913</guid>

					<description><![CDATA[Next we will introduce several view controls used to display multiple items. They are commonly used to render batches of data, presenting a vertical list, grid or table layout. Control ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Next we will introduce several view controls used to display multiple items. They are commonly used to render batches of data, presenting a vertical list, grid or table layout.</p>



<figure class="wp-block-video"><video height="480" style="aspect-ratio: 848 / 480;" width="848" controls src="https://www.foxdevelop.com/wp-content/uploads/2026/07/7月3日1.mp4"></video></figure>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Control</th><th>Description</th></tr></thead><tbody><tr><td>ListView</td><td>Vertical virtualized list</td></tr><tr><td>ListViewItem</td><td>Single item inside ListView</td></tr><tr><td>GridView</td><td>Grid card view (grid / thumbnail tile layout)</td></tr><tr><td>GridViewItem</td><td>Grid tile item for GridView</td></tr><tr><td>ItemsRepeater</td><td>Custom high-performance repeating item container</td></tr><tr><td>ItemsStackPanel</td><td>Virtualized vertical layout panel</td></tr><tr><td>ItemsWrapGrid</td><td>Virtualized auto-wrapping grid panel</td></tr><tr><td>LinedFlowLayout</td><td>Wrapped text-image flow layout</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Add Controls in XAML</h3>



<p class="wp-block-paragraph">First modify your XAML markup. If your page is not a Window type, refer to the example below.</p>


<pre class="wp-block-code"><span><code class="hljs language-cpp">&lt;?xml version=<span class="hljs-string">"1.0"</span> encoding=<span class="hljs-string">"utf-8"</span>?&gt;
&lt;Window
    x:Class=<span class="hljs-string">"AppWinui.MainWindow"</span>
    xmlns=<span class="hljs-string">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span>
    xmlns:x=<span class="hljs-string">"http://schemas.microsoft.com/winfx/2006/xaml"</span>
    xmlns:local=<span class="hljs-string">"using:AppWinui"</span>
    xmlns:d=<span class="hljs-string">"http://schemas.microsoft.com/expression/blend/2008"</span>
    xmlns:mc=<span class="hljs-string">"http://schemas.openxmlformats.org/markup-compatibility/2006"</span>
    mc:Ignorable=<span class="hljs-string">"d"</span>
    Title=<span class="hljs-string">"AppWinui"</span>&gt;

    &lt;ScrollViewer VerticalScrollMode=<span class="hljs-string">"Auto"</span> Padding=<span class="hljs-string">"16"</span> Background=<span class="hljs-string">"#F7F8FA"</span>&gt;
        &lt;StackPanel Spacing=<span class="hljs-string">"36"</span>&gt;
            &lt;!-- <span class="hljs-number">1.</span> ListView + ListViewItem + ItemsStackPanel --&gt;
            &lt;StackPanel&gt;
                &lt;TextBlock Text=<span class="hljs-string">"1. ListView (ItemsStackPanel)"</span> FontSize=<span class="hljs-string">"17"</span> FontWeight=<span class="hljs-string">"SemiBold"</span>/&gt;
                &lt;ListView Height=<span class="hljs-string">"180"</span> Margin=<span class="hljs-string">"0 8 0 0"</span>&gt;
                    &lt;ListView.ItemsPanel&gt;
                        &lt;ItemsPanelTemplate&gt;
                            &lt;ItemsStackPanel/&gt;
                        &lt;/ItemsPanelTemplate&gt;
                    &lt;/ListView.ItemsPanel&gt;

                    &lt;ListViewItem Background=<span class="hljs-string">"White"</span> Padding=<span class="hljs-string">"10"</span>&gt;
                        &lt;StackPanel Orientation=<span class="hljs-string">"Horizontal"</span> Spacing=<span class="hljs-string">"10"</span>&gt;
                            &lt;Ellipse Width=<span class="hljs-string">"36"</span> Height=<span class="hljs-string">"36"</span> Fill=<span class="hljs-string">"#4285F4"</span>/&gt;
                            &lt;TextBlock Text=<span class="hljs-string">"Item One"</span> FontSize=<span class="hljs-string">"15"</span> VerticalAlignment=<span class="hljs-string">"Center"</span>/&gt;
                        &lt;/StackPanel&gt;
                    &lt;/ListViewItem&gt;
                    &lt;ListViewItem Background=<span class="hljs-string">"White"</span> Padding=<span class="hljs-string">"10"</span>&gt;
                        &lt;StackPanel Orientation=<span class="hljs-string">"Horizontal"</span> Spacing=<span class="hljs-string">"10"</span>&gt;
                            &lt;Ellipse Width=<span class="hljs-string">"36"</span> Height=<span class="hljs-string">"36"</span> Fill=<span class="hljs-string">"#EA4335"</span>/&gt;
                            &lt;TextBlock Text=<span class="hljs-string">"Item Two"</span> FontSize=<span class="hljs-string">"15"</span> VerticalAlignment=<span class="hljs-string">"Center"</span>/&gt;
                        &lt;/StackPanel&gt;
                    &lt;/ListViewItem&gt;
                    &lt;ListViewItem Background=<span class="hljs-string">"White"</span> Padding=<span class="hljs-string">"10"</span>&gt;
                        &lt;StackPanel Orientation=<span class="hljs-string">"Horizontal"</span> Spacing=<span class="hljs-string">"10"</span>&gt;
                            &lt;Ellipse Width=<span class="hljs-string">"36"</span> Height=<span class="hljs-string">"36"</span> Fill=<span class="hljs-string">"#FBBC05"</span>/&gt;
                            &lt;TextBlock Text=<span class="hljs-string">"Item Three"</span> FontSize=<span class="hljs-string">"15"</span> VerticalAlignment=<span class="hljs-string">"Center"</span>/&gt;
                        &lt;/StackPanel&gt;
                    &lt;/ListViewItem&gt;
                &lt;/ListView&gt;
            &lt;/StackPanel&gt;

            &lt;!-- <span class="hljs-number">2.</span> GridView + GridViewItem + ItemsWrapGrid  --&gt;
            &lt;StackPanel&gt;
                &lt;TextBlock Text=<span class="hljs-string">"2. GridView (ItemsWrapGrid)"</span> FontSize=<span class="hljs-string">"17"</span> FontWeight=<span class="hljs-string">"SemiBold"</span>/&gt;
                &lt;GridView Height=<span class="hljs-string">"220"</span> Margin=<span class="hljs-string">"0 8 0 0"</span>&gt;
                    &lt;GridView.ItemsPanel&gt;
                        &lt;ItemsPanelTemplate&gt;
                            &lt;ItemsWrapGrid ItemWidth=<span class="hljs-string">"120"</span> ItemHeight=<span class="hljs-string">"140"</span>/&gt;
                        &lt;/ItemsPanelTemplate&gt;
                    &lt;/GridView.ItemsPanel&gt;

                    &lt;GridViewItem Margin=<span class="hljs-string">"4"</span> Background=<span class="hljs-string">"White"</span> CornerRadius=<span class="hljs-string">"6"</span> Padding=<span class="hljs-string">"8"</span>&gt;
                        &lt;StackPanel HorizontalAlignment=<span class="hljs-string">"Center"</span> VerticalAlignment=<span class="hljs-string">"Center"</span> Spacing=<span class="hljs-string">"6"</span>&gt;
                            &lt;Rectangle Width=<span class="hljs-string">"70"</span> Height=<span class="hljs-string">"70"</span> Fill=<span class="hljs-string">"#FF7A7A"</span> /&gt;
                            &lt;TextBlock Text=<span class="hljs-string">"Tile 1"</span> FontSize=<span class="hljs-string">"14"</span>/&gt;
                        &lt;/StackPanel&gt;
                    &lt;/GridViewItem&gt;
                    &lt;GridViewItem Margin=<span class="hljs-string">"4"</span> Background=<span class="hljs-string">"White"</span> CornerRadius=<span class="hljs-string">"6"</span> Padding=<span class="hljs-string">"8"</span>&gt;
                        &lt;StackPanel HorizontalAlignment=<span class="hljs-string">"Center"</span> VerticalAlignment=<span class="hljs-string">"Center"</span> Spacing=<span class="hljs-string">"6"</span>&gt;
                            &lt;Rectangle Width=<span class="hljs-string">"70"</span> Height=<span class="hljs-string">"70"</span> Fill=<span class="hljs-string">"#48CFC0"</span> /&gt;
                            &lt;TextBlock Text=<span class="hljs-string">"Tile 2"</span> FontSize=<span class="hljs-string">"14"</span>/&gt;
                        &lt;/StackPanel&gt;
                    &lt;/GridViewItem&gt;
                    &lt;GridViewItem Margin=<span class="hljs-string">"4"</span> Background=<span class="hljs-string">"White"</span> CornerRadius=<span class="hljs-string">"6"</span> Padding=<span class="hljs-string">"8"</span>&gt;
                        &lt;StackPanel HorizontalAlignment=<span class="hljs-string">"Center"</span> VerticalAlignment=<span class="hljs-string">"Center"</span> Spacing=<span class="hljs-string">"6"</span>&gt;
                            &lt;Rectangle Width=<span class="hljs-string">"70"</span> Height=<span class="hljs-string">"70"</span> Fill=<span class="hljs-string">"#FFD470"</span> /&gt;
                            &lt;TextBlock Text=<span class="hljs-string">"Tile 3"</span> FontSize=<span class="hljs-string">"14"</span>/&gt;
                        &lt;/StackPanel&gt;
                    &lt;/GridViewItem&gt;
                    &lt;GridViewItem Margin=<span class="hljs-string">"4"</span> Background=<span class="hljs-string">"White"</span> CornerRadius=<span class="hljs-string">"6"</span> Padding=<span class="hljs-string">"8"</span>&gt;
                        &lt;StackPanel HorizontalAlignment=<span class="hljs-string">"Center"</span> VerticalAlignment=<span class="hljs-string">"Center"</span> Spacing=<span class="hljs-string">"6"</span>&gt;
                            &lt;Rectangle Width=<span class="hljs-string">"70"</span> Height=<span class="hljs-string">"70"</span> Fill=<span class="hljs-string">"#8A3797"</span> /&gt;
                            &lt;TextBlock Text=<span class="hljs-string">"Tile 4"</span> FontSize=<span class="hljs-string">"14"</span>/&gt;
                        &lt;/StackPanel&gt;
                    &lt;/GridViewItem&gt;
                &lt;/GridView&gt;
            &lt;/StackPanel&gt;

            &lt;!-- <span class="hljs-number">3.</span> ItemsRepeater + StackLayout (ItemsStackPanel)  --&gt;
            &lt;StackPanel&gt;
                &lt;TextBlock Text=<span class="hljs-string">"3. ItemsRepeater - StackLayout"</span> FontSize=<span class="hljs-string">"17"</span> FontWeight=<span class="hljs-string">"SemiBold"</span>/&gt;
                &lt;ItemsRepeater Height=<span class="hljs-string">"160"</span> Margin=<span class="hljs-string">"0 8 0 0"</span> ItemsSource=<span class="hljs-string">"{x:Bind ListData}"</span>&gt;
                    &lt;ItemsRepeater.Layout&gt;
                        &lt;StackLayout/&gt;
                    &lt;/ItemsRepeater.Layout&gt;
                    &lt;ItemsRepeater.ItemTemplate&gt;
                        &lt;DataTemplate x:DataType=<span class="hljs-string">"x:String"</span>&gt;
                            &lt;Border Background=<span class="hljs-string">"White"</span> Margin=<span class="hljs-string">"3"</span> Padding=<span class="hljs-string">"8"</span> CornerRadius=<span class="hljs-string">"5"</span>&gt;
                                &lt;StackPanel Orientation=<span class="hljs-string">"Horizontal"</span> Spacing=<span class="hljs-string">"8"</span>&gt;
                                    &lt;FontIcon Glyph=<span class="hljs-string">"&amp;#xE700;"</span> FontSize=<span class="hljs-string">"22"</span> Foreground=<span class="hljs-string">"#0078D4"</span>/&gt;
                                    &lt;TextBlock Text=<span class="hljs-string">"{x:Bind}"</span> FontSize=<span class="hljs-string">"15"</span> VerticalAlignment=<span class="hljs-string">"Center"</span>/&gt;
                                &lt;/StackPanel&gt;
                            &lt;/Border&gt;
                        &lt;/DataTemplate&gt;
                    &lt;/ItemsRepeater.ItemTemplate&gt;
                &lt;/ItemsRepeater&gt;
            &lt;/StackPanel&gt;

            &lt;!-- <span class="hljs-number">4.</span> ItemsRepeater + ItemsWrapGrid  --&gt;
            &lt;StackPanel&gt;
                &lt;TextBlock Text=<span class="hljs-string">"4. ItemsRepeater + ItemsWrapGrid Panel"</span> FontSize=<span class="hljs-string">"17"</span> FontWeight=<span class="hljs-string">"SemiBold"</span>/&gt;
                &lt;ItemsRepeater Height=<span class="hljs-string">"200"</span> Margin=<span class="hljs-string">"0 8 0 0"</span> ItemsSource=<span class="hljs-string">"{x:Bind GridData}"</span>&gt;
                    &lt;ItemsRepeater.ItemTemplate&gt;
                        &lt;DataTemplate x:DataType=<span class="hljs-string">"x:String"</span>&gt;
                            &lt;Border Background=<span class="hljs-string">"#EFF5FF"</span> Margin=<span class="hljs-string">"4"</span> CornerRadius=<span class="hljs-string">"6"</span>&gt;
                                &lt;StackPanel HorizontalAlignment=<span class="hljs-string">"Center"</span> VerticalAlignment=<span class="hljs-string">"Center"</span> Spacing=<span class="hljs-string">"4"</span>&gt;
                                    &lt;FontIcon Glyph=<span class="hljs-string">"&amp;#xE80F;"</span> FontSize=<span class="hljs-string">"28"</span> Foreground=<span class="hljs-string">"#2463EB"</span>/&gt;
                                    &lt;TextBlock Text=<span class="hljs-string">"{x:Bind}"</span> FontSize=<span class="hljs-string">"13"</span>/&gt;
                                &lt;/StackPanel&gt;
                            &lt;/Border&gt;
                        &lt;/DataTemplate&gt;
                    &lt;/ItemsRepeater.ItemTemplate&gt;
                &lt;/ItemsRepeater&gt;
            &lt;/StackPanel&gt;

            &lt;!-- <span class="hljs-number">5.</span> ItemsRepeater + LinedFlowLayout  --&gt;
            &lt;StackPanel&gt;
                &lt;TextBlock Text=<span class="hljs-string">"5. ItemsRepeater - LinedFlowLayout"</span> FontSize=<span class="hljs-string">"17"</span> FontWeight=<span class="hljs-string">"SemiBold"</span>/&gt;
                &lt;ItemsRepeater Height=<span class="hljs-string">"240"</span> Margin=<span class="hljs-string">"0 8 0 0"</span> ItemsSource=<span class="hljs-string">"{x:Bind FlowData}"</span>&gt;
                    &lt;ItemsRepeater.Layout&gt;
                        &lt;LinedFlowLayout LineHeight=<span class="hljs-string">"80"</span>/&gt;
                    &lt;/ItemsRepeater.Layout&gt;
                    &lt;ItemsRepeater.ItemTemplate&gt;
                        &lt;DataTemplate x:DataType=<span class="hljs-string">"x:String"</span>&gt;
                            &lt;Border Background=<span class="hljs-string">"White"</span> Padding=<span class="hljs-string">"10"</span> Margin=<span class="hljs-string">"3"</span> CornerRadius=<span class="hljs-string">"5"</span> BorderBrush=<span class="hljs-string">"#E0E2E6"</span> BorderThickness=<span class="hljs-string">"1"</span>&gt;
                                &lt;StackPanel Orientation=<span class="hljs-string">"Horizontal"</span> Spacing=<span class="hljs-string">"8"</span>&gt;
                                    &lt;Rectangle Width=<span class="hljs-string">"50"</span> Height=<span class="hljs-string">"50"</span> Fill=<span class="hljs-string">"#10B981"</span>/&gt;
                                    &lt;TextBlock Text=<span class="hljs-string">"{x:Bind}"</span> FontSize=<span class="hljs-string">"13"</span> VerticalAlignment=<span class="hljs-string">"Center"</span>/&gt;
                                &lt;/StackPanel&gt;
                            &lt;/Border&gt;
                        &lt;/DataTemplate&gt;
                    &lt;/ItemsRepeater.ItemTemplate&gt;
                &lt;/ItemsRepeater&gt;
            &lt;/StackPanel&gt;
        &lt;/StackPanel&gt;
    &lt;/ScrollViewer&gt;

&lt;/Window&gt;
</code></span></pre>


<p class="wp-block-paragraph">We used ItemsSource to bind data sources here, data objects are constructed in backend C++ code, for example ItemsSource=&#8221;{x:Bind FlowData}&#8221;.</p>



<h3 class="wp-block-heading">Add Properties in IDL File</h3>



<p class="wp-block-paragraph">Add three bindable properties: ListData, GridData, FlowData</p>


<pre class="wp-block-code"><span><code class="hljs language-cpp"><span class="hljs-keyword">namespace</span> AppWinui
{
    &#91;default_interface]
    runtimeclass MainWindow : Microsoft.UI.Xaml.Window
    {
        MainWindow();
        Int32 MyProperty;

        Windows.Foundation.Collections.IObservableVector&lt;String&gt; ListData{ get; };
        Windows.Foundation.Collections.IObservableVector&lt;String&gt; GridData{ get; };
        Windows.Foundation.Collections.IObservableVector&lt;String&gt; FlowData{ get; };

    }
}
</code></span></pre>


<h3 class="wp-block-heading">Modify Header (.h) File</h3>



<p class="wp-block-paragraph">Remove constructor implementation, keep only declaration.</p>



<p class="wp-block-paragraph">Add three private member variables to store data collections.</p>



<p class="wp-block-paragraph">Add three public getter methods to expose data for XAML binding, e.g. ListData().</p>


<pre class="wp-block-code"><span><code class="hljs language-cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">pragma</span> once</span>

<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"MainWindow.g.h"</span></span>

<span class="hljs-keyword">namespace</span> winrt::AppWinui::implementation
{
    <span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">MainWindow</span> :</span> MainWindowT&lt;MainWindow&gt;
    {

    <span class="hljs-keyword">private</span>:
        winrt::Windows::Foundation::Collections::IObservableVector&lt;hstring&gt; m_listData;
        winrt::Windows::Foundation::Collections::IObservableVector&lt;hstring&gt; m_gridData;
        winrt::Windows::Foundation::Collections::IObservableVector&lt;hstring&gt; m_flowData;
    <span class="hljs-keyword">public</span>:

        winrt::Windows::Foundation::<span class="hljs-function">Collections::IObservableVector&lt;hstring&gt; <span class="hljs-title">ListData</span><span class="hljs-params">()</span></span>;
        winrt::Windows::Foundation::<span class="hljs-function">Collections::IObservableVector&lt;hstring&gt; <span class="hljs-title">GridData</span><span class="hljs-params">()</span></span>;
        winrt::Windows::Foundation::<span class="hljs-function">Collections::IObservableVector&lt;hstring&gt; <span class="hljs-title">FlowData</span><span class="hljs-params">()</span></span>;

        MainWindow();

        <span class="hljs-function"><span class="hljs-keyword">int32_t</span> <span class="hljs-title">MyProperty</span><span class="hljs-params">()</span></span>;
        <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">MyProperty</span><span class="hljs-params">(<span class="hljs-keyword">int32_t</span> value)</span></span>;
    };
}

<span class="hljs-keyword">namespace</span> winrt::AppWinui::factory_implementation
{
    <span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">MainWindow</span> :</span> MainWindowT&lt;MainWindow, implementation::MainWindow&gt;
    {
    };
}
</code></span></pre>


<h3 class="wp-block-heading">Initialize Data Sources in .cpp File</h3>


<pre class="wp-block-code"><span><code class="hljs language-cpp"><span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"pch.h"</span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"MainWindow.xaml.h"</span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">if</span> __has_include(<span class="hljs-meta-string">"MainWindow.g.cpp"</span>)</span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"MainWindow.g.cpp"</span></span>
<span class="hljs-meta">#<span class="hljs-meta-keyword">endif</span></span>

<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> winrt;
<span class="hljs-keyword">using</span> <span class="hljs-keyword">namespace</span> Microsoft::UI::Xaml;

<span class="hljs-comment">// To learn more about WinUI, the WinUI project structure,</span>
<span class="hljs-comment">// and more about our project templates, see: http://aka.ms/winui-project-info.</span>

<span class="hljs-keyword">namespace</span> winrt::AppWinui::implementation
{
    <span class="hljs-function"><span class="hljs-keyword">int32_t</span> <span class="hljs-title">MainWindow::MyProperty</span><span class="hljs-params">()</span>
    </span>{
        <span class="hljs-keyword">throw</span> hresult_not_implemented();
    }

    <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">MainWindow::MyProperty</span><span class="hljs-params">(<span class="hljs-keyword">int32_t</span> <span class="hljs-comment">/* value */</span>)</span>
    </span>{
        <span class="hljs-keyword">throw</span> hresult_not_implemented();
    }

    MainWindow::MainWindow()
    {
        InitializeComponent();

        m_listData = winrt::single_threaded_observable_vector&lt;hstring&gt;(
            { <span class="hljs-string">L"Alpha"</span>, <span class="hljs-string">L"Beta"</span>, <span class="hljs-string">L"Gamma"</span> });

        m_gridData = winrt::single_threaded_observable_vector&lt;hstring&gt;(
            { <span class="hljs-string">L"Tile A"</span>, <span class="hljs-string">L"Tile B"</span>, <span class="hljs-string">L"Tile C"</span>, <span class="hljs-string">L"Tile D"</span> });

        m_flowData = winrt::single_threaded_observable_vector&lt;hstring&gt;(
            { <span class="hljs-string">L"Flow Item 1"</span>, <span class="hljs-string">L"Flow Item 2"</span>, <span class="hljs-string">L"Flow Item 3"</span> });
    }


    winrt::Windows::Foundation::<span class="hljs-function">Collections::IObservableVector&lt;hstring&gt; <span class="hljs-title">MainWindow::ListData</span><span class="hljs-params">()</span>
    </span>{
        <span class="hljs-keyword">return</span> m_listData;
    }

    winrt::Windows::Foundation::<span class="hljs-function">Collections::IObservableVector&lt;hstring&gt; <span class="hljs-title">MainWindow::GridData</span><span class="hljs-params">()</span>
    </span>{
        <span class="hljs-keyword">return</span> m_gridData;
    }

    winrt::Windows::Foundation::<span class="hljs-function">Collections::IObservableVector&lt;hstring&gt; <span class="hljs-title">MainWindow::FlowData</span><span class="hljs-params">()</span>
    </span>{
        <span class="hljs-keyword">return</span> m_flowData;
    }
}

</code></span></pre>


<p class="wp-block-paragraph">Inside the constructor, initialize observable vector data and assign to private fields, then implement three public getter functions to return the collections.</p>



<h3 class="wp-block-heading">Project Download</h3>



<div class="wp-block-file"><a id="wp-block-file--media-87c27b74-7049-4ee8-ac85-f99c42e43a3b" href="https://www.foxdevelop.com/wp-content/uploads/2026/07/AppWinui-2.zip">AppWinui</a><a href="https://www.foxdevelop.com/wp-content/uploads/2026/07/AppWinui-2.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-87c27b74-7049-4ee8-ac85-f99c42e43a3b">Download</a></div>



<p class="wp-block-paragraph">WinUI 3 C++ Controls Guide – List &amp; Collection Views</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-list-collection-views/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://www.foxdevelop.com/wp-content/uploads/2026/07/7月3日1.mp4" length="2496871" type="video/mp4" />

			</item>
		<item>
		<title>WinUI 3 C++ Controls Guide – Dynamically Add Items to ListBox</title>
		<link>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-dynamically-add-items-to-listbox/</link>
					<comments>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-dynamically-add-items-to-listbox/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Tue, 07 Jul 2026 06:24:36 +0000</pubDate>
				<category><![CDATA[Winui3 C++ Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=3893</guid>

					<description><![CDATA[Now we will implement a frequently used function: dynamically add items to a ListBox. Click the button to insert a new item into the ListBox&#8217;s Items collection. This feature is ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Now we will implement a frequently used function: dynamically add items to a ListBox. Click the button to insert a new item into the ListBox&#8217;s Items collection. This feature is widely adopted in most software programs.</p>



<figure class="wp-block-video"><video height="532" style="aspect-ratio: 856 / 532;" width="856" controls src="https://www.foxdevelop.com/wp-content/uploads/2026/07/Video-20260702213458.mp4"></video></figure>



<p class="wp-block-paragraph">First add a ListBox and a Button in XAML</p>


<pre class="wp-block-code"><span><code class="hljs language-cpp">&lt;Border Padding=<span class="hljs-string">"14"</span> BorderThickness=<span class="hljs-string">"1"</span> BorderBrush=<span class="hljs-string">"Gray"</span> CornerRadius=<span class="hljs-string">"8"</span>&gt;
    &lt;StackPanel Spacing=<span class="hljs-string">"12"</span>&gt;
        &lt;TextBlock Text=<span class="hljs-string">"5. ListBox - Fixed Height Single/Multi Select List"</span> FontWeight=<span class="hljs-string">"SemiBold"</span> FontSize=<span class="hljs-string">"14"</span> Margin=<span class="hljs-string">"0,0,0,8"</span>/&gt;
        &lt;Button Content=<span class="hljs-string">"Add Item"</span> Click=<span class="hljs-string">"Button_Click"</span>/&gt;
        &lt;ListBox Width=<span class="hljs-string">"280"</span> Height=<span class="hljs-string">"140"</span> x:Name=<span class="hljs-string">"myListBox"</span> SelectionMode=<span class="hljs-string">"Multiple"</span>&gt;
            &lt;ListBoxItem Content=<span class="hljs-string">"Documents"</span>/&gt;
            &lt;ListBoxItem Content=<span class="hljs-string">"Pictures"</span>/&gt;
            &lt;ListBoxItem Content=<span class="hljs-string">"Videos"</span>/&gt;
            &lt;ListBoxItem Content=<span class="hljs-string">"Audios"</span>/&gt;
            &lt;ListBoxItem Content=<span class="hljs-string">"Installers"</span>/&gt;
        &lt;/ListBox&gt;
    &lt;/StackPanel&gt;
&lt;/Border&gt;</code></span></pre>


<p class="wp-block-paragraph">We added a button; clicking it will generate a new ListBox item. To operate the ListBox in backend code, we assign it a name: x:Name=&#8221;myListBox&#8221;</p>



<p class="wp-block-paragraph">Press F12 to generate the event handler function automatically.</p>


<pre class="wp-block-code"><span><code class="hljs language-cpp"><span class="hljs-keyword">void</span> winrt::App6::implementation::MainWindow::Button_Click(
winrt::Windows::Foundation::IInspectable <span class="hljs-keyword">const</span>&amp; sender,
 winrt::Microsoft::UI::Xaml::RoutedEventArgs <span class="hljs-keyword">const</span>&amp; e)
{
    <span class="hljs-comment">// Get the Items collection of ListBox</span>
    <span class="hljs-keyword">auto</span> itemCollection = myListBox().Items();

    itemCollection.Append(box_value(<span class="hljs-string">L"New Item"</span>));
}</code></span></pre>


<p class="wp-block-paragraph">In the event function, we first obtain the control instance named x:Name=&#8221;myListBox&#8221;, get its Items collection, then use Append to add new content.</p>



<p class="wp-block-paragraph">WinUI 3 C++ Controls Guide – Dynamically Add Items to ListBox</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-guide-dynamically-add-items-to-listbox/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://www.foxdevelop.com/wp-content/uploads/2026/07/Video-20260702213458.mp4" length="2394469" type="video/mp4" />

			</item>
		<item>
		<title>WinUI 3 C++ Controls – Selection &#038; Toggle Controls</title>
		<link>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-selection-toggle-controls/</link>
					<comments>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-selection-toggle-controls/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Tue, 07 Jul 2026 03:54:41 +0000</pubDate>
				<category><![CDATA[Winui3 C++ Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=3873</guid>

					<description><![CDATA[In this lesson, we will learn selection and toggle controls for WinUI 3 C++. Control Name Description CheckBox Multi-select checkbox RadioButton Single-choice radio button (mutually exclusive within the same GroupName) ...]]></description>
										<content:encoded><![CDATA[

<p class="wp-block-paragraph">In this lesson, we will learn selection and toggle controls for WinUI 3 C++.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Control Name</th><th>Description</th></tr></thead><tbody><tr><td>CheckBox</td><td>Multi-select checkbox</td></tr><tr><td>RadioButton</td><td>Single-choice radio button (mutually exclusive within the same GroupName)</td></tr><tr><td>ToggleSwitch</td><td>Slide toggle switch</td></tr><tr><td>ComboBox</td><td>Dropdown selection box</td></tr><tr><td>ComboBoxItem</td><td>Single option inside ComboBox</td></tr><tr><td>ListBox</td><td>Fixed list selection box (no UI virtualization)</td></tr><tr><td>ListBoxItem</td><td>Single list item for ListBox</td></tr><tr><td>SelectorBar</td><td>Horizontal segmented selector / tab bar</td></tr><tr><td>SelectorBarItem</td><td>Segment tab item</td></tr><tr><td>TreeView</td><td>Hierarchical tree view</td></tr><tr><td>TreeViewItem</td><td>Tree node item</td></tr><tr><td>RatingControl</td><td>Star rating control</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Below is a demo showing these commonly used controls.</p>



<figure class="wp-block-video"><video height="600" style="aspect-ratio: 924 / 600;" width="924" controls src="https://www.foxdevelop.com/wp-content/uploads/2026/07/Video-20260702211944.mp4"></video></figure>



<p class="wp-block-paragraph">There may be minor differences between different SDK versions; the demo uses Visual Studio 2022.</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-meta">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">Window</span>
    <span class="hljs-attr">x:Class</span>=<span class="hljs-string">"App6.MainWindow"</span>
    <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span>
    <span class="hljs-attr">xmlns:x</span>=<span class="hljs-string">"http://schemas.microsoft.com/winfx/2006/xaml"</span>
    <span class="hljs-attr">xmlns:local</span>=<span class="hljs-string">"using:App6"</span>
    <span class="hljs-attr">xmlns:d</span>=<span class="hljs-string">"http://schemas.microsoft.com/expression/blend/2008"</span>
    <span class="hljs-attr">xmlns:mc</span>=<span class="hljs-string">"http://schemas.openxmlformats.org/markup-compatibility/2006"</span>
    <span class="hljs-attr">mc:Ignorable</span>=<span class="hljs-string">"d"</span>
    <span class="hljs-attr">Title</span>=<span class="hljs-string">"App6 Control Demo"</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">ScrollViewer</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"30"</span> <span class="hljs-attr">VerticalScrollBarVisibility</span>=<span class="hljs-string">"Auto"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"35"</span>&gt;</span>
            <span class="hljs-comment">&lt;!-- 1. CheckBox Multi-selection Checkbox --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">BorderThickness</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">BorderBrush</span>=<span class="hljs-string">"Gray"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"8"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"1. CheckBox - Multi-selection Checkbox"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,0,0,8"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">CheckBox</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Option A"</span> <span class="hljs-attr">IsChecked</span>=<span class="hljs-string">"True"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">CheckBox</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Option B"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">CheckBox</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Option C"</span> <span class="hljs-attr">IsThreeState</span>=<span class="hljs-string">"True"</span>/&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 2. RadioButton Grouped Single Selection --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">BorderThickness</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">BorderBrush</span>=<span class="hljs-string">"Gray"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"8"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"2. RadioButton - Grouped Single Selection (GroupName)"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,0,0,8"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Gender Group (GroupName=Gender)"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">RadioButton</span> <span class="hljs-attr">GroupName</span>=<span class="hljs-string">"Gender"</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Male"</span> <span class="hljs-attr">IsChecked</span>=<span class="hljs-string">"True"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">RadioButton</span> <span class="hljs-attr">GroupName</span>=<span class="hljs-string">"Gender"</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Female"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">RadioButton</span> <span class="hljs-attr">GroupName</span>=<span class="hljs-string">"Gender"</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Prefer not to say"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,10,0,0"</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Age Group (GroupName=Age)"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">RadioButton</span> <span class="hljs-attr">GroupName</span>=<span class="hljs-string">"Age"</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Under 18"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">RadioButton</span> <span class="hljs-attr">GroupName</span>=<span class="hljs-string">"Age"</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"18-30"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">RadioButton</span> <span class="hljs-attr">GroupName</span>=<span class="hljs-string">"Age"</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Over 30"</span>/&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 3. ToggleSwitch Toggle Slider Switch --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">BorderThickness</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">BorderBrush</span>=<span class="hljs-string">"Gray"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"8"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"3. ToggleSwitch - Toggle Slider Switch"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,0,0,8"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Orientation</span>=<span class="hljs-string">"Horizontal"</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"20"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ToggleSwitch</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Auto Sync"</span> <span class="hljs-attr">IsOn</span>=<span class="hljs-string">"True"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ToggleSwitch</span> <span class="hljs-attr">Header</span>=<span class="hljs-string">"Dark Mode"</span> <span class="hljs-attr">OffContent</span>=<span class="hljs-string">"Off"</span> <span class="hljs-attr">OnContent</span>=<span class="hljs-string">"On"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 4. ComboBox Dropdown Single Select List --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">BorderThickness</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">BorderBrush</span>=<span class="hljs-string">"Gray"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"8"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"4. ComboBox - Dropdown Single Select List"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,0,0,8"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">ComboBox</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"260"</span> <span class="hljs-attr">SelectedIndex</span>=<span class="hljs-string">"1"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ComboBoxItem</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"New York"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ComboBoxItem</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"London"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ComboBoxItem</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Hong Kong"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ComboBoxItem</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Tokyo"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">ComboBox</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 5. ListBox Fixed Height Single/Multi List --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">BorderThickness</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">BorderBrush</span>=<span class="hljs-string">"Gray"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"8"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"5. ListBox - Fixed Height Single/Multi Select List"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,0,0,8"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">ListBox</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"280"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"140"</span> <span class="hljs-attr">SelectionMode</span>=<span class="hljs-string">"Multiple"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ListBoxItem</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Documents"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ListBoxItem</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Pictures"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ListBoxItem</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Videos"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ListBoxItem</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Audios"</span>/&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ListBoxItem</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Installers"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">ListBox</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 6. ListView Virtualized High-Performance List (Recommended for Large Data) --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">BorderThickness</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">BorderBrush</span>=<span class="hljs-string">"Gray"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"8"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"6. ListView - Virtualized High-Performance List (Large Data Recommended)"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,0,0,8"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">ListView</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"320"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"160"</span> <span class="hljs-attr">SelectionMode</span>=<span class="hljs-string">"Single"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ListViewItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Orientation</span>=<span class="hljs-string">"Horizontal"</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"10"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">SymbolIcon</span> <span class="hljs-attr">Symbol</span>=<span class="hljs-string">"Document"</span>/&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Data Item 001"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">ListViewItem</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ListViewItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Orientation</span>=<span class="hljs-string">"Horizontal"</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"10"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">SymbolIcon</span> <span class="hljs-attr">Symbol</span>=<span class="hljs-string">"Document"</span>/&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Data Item 002"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">ListViewItem</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">ListViewItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Orientation</span>=<span class="hljs-string">"Horizontal"</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"10"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">SymbolIcon</span> <span class="hljs-attr">Symbol</span>=<span class="hljs-string">"Document"</span>/&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Data Item 003"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">ListViewItem</span>&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">ListView</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 7. GridView Grid Card Layout --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">BorderThickness</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">BorderBrush</span>=<span class="hljs-string">"Gray"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"8"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"7. GridView - Grid Card Layout"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,0,0,8"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">GridView</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"500"</span> <span class="hljs-attr">Height</span>=<span class="hljs-string">"180"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">GridView.ItemContainerStyle</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">Style</span> <span class="hljs-attr">TargetType</span>=<span class="hljs-string">"GridViewItem"</span>&gt;</span><span class="xml">
                                <span class="hljs-tag">&lt;<span class="hljs-name">Setter</span> <span class="hljs-attr">Property</span>=<span class="hljs-string">"Width"</span> <span class="hljs-attr">Value</span>=<span class="hljs-string">"110"</span>/&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">Setter</span> <span class="hljs-attr">Property</span>=<span class="hljs-string">"Height"</span> <span class="hljs-attr">Value</span>=<span class="hljs-string">"100"</span>/&gt;</span>
                            </span><span class="hljs-tag">&lt;/<span class="hljs-name">Style</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">GridView.ItemContainerStyle</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">GridViewItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"LightBlue"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"5"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"6"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Card 1"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">GridViewItem</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">GridViewItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"LightGreen"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"5"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"6"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Card 2"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">GridViewItem</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">GridViewItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"LightSalmon"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"5"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"6"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Card 3"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">GridViewItem</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">GridViewItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"LightPink"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"5"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"6"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Card 4"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">GridViewItem</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">GridViewItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"LightGoldenrodYellow"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"5"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"6"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Card 5"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">GridViewItem</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">GridViewItem</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Background</span>=<span class="hljs-string">"LightCyan"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"5"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"6"</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Card 6"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">GridViewItem</span>&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">GridView</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>

            <span class="hljs-comment">&lt;!-- 9. SelectorBar Horizontal Tab Selector --&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Border</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">BorderThickness</span>=<span class="hljs-string">"1"</span> <span class="hljs-attr">BorderBrush</span>=<span class="hljs-string">"Gray"</span> <span class="hljs-attr">CornerRadius</span>=<span class="hljs-string">"8"</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"12"</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">TextBlock</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"9. SelectorBar - Horizontal Tab Selector"</span> <span class="hljs-attr">FontWeight</span>=<span class="hljs-string">"SemiBold"</span> <span class="hljs-attr">FontSize</span>=<span class="hljs-string">"14"</span> <span class="hljs-attr">Margin</span>=<span class="hljs-string">"0,0,0,8"</span>/&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">SelectorBar</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"450"</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">SelectorBarItem</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Home"</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">SelectorBarItem.Icon</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">SymbolIcon</span> <span class="hljs-attr">Symbol</span>=<span class="hljs-string">"Home"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">SelectorBarItem.Icon</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">SelectorBarItem</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">SelectorBarItem</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Messages"</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">SelectorBarItem.Icon</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">SymbolIcon</span> <span class="hljs-attr">Symbol</span>=<span class="hljs-string">"Message"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">SelectorBarItem.Icon</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">SelectorBarItem</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">SelectorBarItem</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Files"</span>&gt;</span>
                            <span class="hljs-tag">&lt;<span class="hljs-name">SelectorBarItem.Icon</span>&gt;</span>
                                <span class="hljs-tag">&lt;<span class="hljs-name">SymbolIcon</span> <span class="hljs-attr">Symbol</span>=<span class="hljs-string">"Folder"</span>/&gt;</span>
                            <span class="hljs-tag">&lt;/<span class="hljs-name">SelectorBarItem.Icon</span>&gt;</span>
                        <span class="hljs-tag">&lt;/<span class="hljs-name">SelectorBarItem</span>&gt;</span>

                    <span class="hljs-tag">&lt;/<span class="hljs-name">SelectorBar</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
            <span class="hljs-tag">&lt;/<span class="hljs-name">Border</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">ScrollViewer</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">Window</span>&gt;</span></code></span></pre>


<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-selection-toggle-controls/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://www.foxdevelop.com/wp-content/uploads/2026/07/Video-20260702211944.mp4" length="1366491" type="video/mp4" />

			</item>
		<item>
		<title>WinUI 3 C++ Controls – Button Controls</title>
		<link>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-button-controls/</link>
					<comments>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-button-controls/#comments</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Tue, 07 Jul 2026 03:43:14 +0000</pubDate>
				<category><![CDATA[Winui3 C++ Tutorial]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=3853</guid>

					<description><![CDATA[We have already used button controls in previous lessons, and the most basic one is Button. Next, we will learn other types of button controls. Buttons are interactive UI elements ...]]></description>
										<content:encoded><![CDATA[

<p class="wp-block-paragraph">We have already used button controls in previous lessons, and the most basic one is Button. Next, we will learn other types of button controls. Buttons are interactive UI elements that execute custom logic when clicked.</p>



<figure class="wp-block-video"><video height="536" style="aspect-ratio: 876 / 536;" width="876" controls src="https://www.foxdevelop.com/wp-content/uploads/2026/07/Video-20260702205009.mp4"></video></figure>



<p class="wp-block-paragraph">The main button controls provided by WinUI 3 C++ are listed below:</p>



<ul class="wp-block-list">

<li><strong>Button</strong>: Standard single-click button</li>


<li><strong>ToggleButton</strong>: Toggle button with checked / unchecked state</li>


<li><strong>RepeatButton</strong>: Fires click events continuously when held down</li>


<li><strong>HyperlinkButton</strong>: Hyperlink-style clickable button</li>


<li><strong>SplitButton</strong>: Combined control with main action button + dropdown flyout menu</li>


<li><strong>DropDownButton</strong>: Button with dropdown flyout menu only</li>


<li><strong>CommandBarButton / AppBarButton</strong>: Icon buttons for toolbars and command bars</li>


<li><strong>MenuFlyoutItem / ToggleMenuFlyoutItem</strong>: Context menu / dropdown menu entries (supports check state for Toggle variant)</li>

</ul>



<p class="wp-block-paragraph">The following XAML demonstrates how to declare all these button controls. Event binding for backend logic works exactly the same way as previous examples: place your cursor on the Click event name and press F12 to auto-generate the corresponding event handler method. We will modify MainWindow.xaml as shown below.</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"> <span class="hljs-tag">&lt;<span class="hljs-name">StackPanel</span> <span class="hljs-attr">Spacing</span>=<span class="hljs-string">"15"</span> <span class="hljs-attr">Padding</span>=<span class="hljs-string">"20"</span> <span class="hljs-attr">Orientation</span>=<span class="hljs-string">"Vertical"</span> <span class="hljs-attr">HorizontalAlignment</span>=<span class="hljs-string">"Center"</span> <span class="hljs-attr">VerticalAlignment</span>=<span class="hljs-string">"Center"</span>&gt;</span>
     <span class="hljs-comment">&lt;!-- 1. Button: Standard click button --&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"NormalBtn"</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Standard Button (Button)"</span> <span class="hljs-attr">Click</span>=<span class="hljs-string">"NormalBtn_Click"</span>/&gt;</span>

     <span class="hljs-comment">&lt;!-- 2. ToggleButton: Switchable checked/unchecked state button --&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">ToggleButton</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"ToggleBtn"</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Toggle Button (ToggleButton)"</span>/&gt;</span>

     <span class="hljs-comment">&lt;!-- 3. RepeatButton: Trigger click continuously when holding down --&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">RepeatButton</span> <span class="hljs-attr">x:Name</span>=<span class="hljs-string">"RepeatBtn"</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Repeat Button (RepeatButton)"</span> <span class="hljs-attr">Click</span>=<span class="hljs-string">"RepeatBtn_Click"</span>/&gt;</span>

     <span class="hljs-comment">&lt;!-- 4. HyperlinkButton: Hyperlink style button --&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">HyperlinkButton</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Hyperlink Button (HyperlinkButton)"</span> <span class="hljs-attr">NavigateUri</span>=<span class="hljs-string">"https://learn.microsoft.com/windows/apps/winui"</span>/&gt;</span>

     <span class="hljs-comment">&lt;!-- 5. SplitButton: Combined main button + dropdown menu --&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">SplitButton</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Split Button (SplitButton)"</span>&gt;</span>
         <span class="hljs-tag">&lt;<span class="hljs-name">SplitButton.Flyout</span>&gt;</span>
             <span class="hljs-tag">&lt;<span class="hljs-name">MenuFlyout</span>&gt;</span>
                 <span class="hljs-tag">&lt;<span class="hljs-name">MenuFlyoutItem</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Option A"</span>/&gt;</span>
                 <span class="hljs-tag">&lt;<span class="hljs-name">MenuFlyoutItem</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Option B"</span>/&gt;</span>
             <span class="hljs-tag">&lt;/<span class="hljs-name">MenuFlyout</span>&gt;</span>
         <span class="hljs-tag">&lt;/<span class="hljs-name">SplitButton.Flyout</span>&gt;</span>
     <span class="hljs-tag">&lt;/<span class="hljs-name">SplitButton</span>&gt;</span>

     <span class="hljs-comment">&lt;!-- 6. DropDownButton: Button with dropdown menu only --&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">DropDownButton</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Dropdown Button (DropDownButton)"</span>&gt;</span>
         <span class="hljs-tag">&lt;<span class="hljs-name">DropDownButton.Flyout</span>&gt;</span>
             <span class="hljs-tag">&lt;<span class="hljs-name">MenuFlyout</span>&gt;</span>
                 <span class="hljs-tag">&lt;<span class="hljs-name">MenuFlyoutItem</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Function 1"</span>/&gt;</span>
                 <span class="hljs-tag">&lt;<span class="hljs-name">ToggleMenuFlyoutItem</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Enable Mode"</span>/&gt;</span>
             <span class="hljs-tag">&lt;/<span class="hljs-name">MenuFlyout</span>&gt;</span>
         <span class="hljs-tag">&lt;/<span class="hljs-name">DropDownButton.Flyout</span>&gt;</span>
     <span class="hljs-tag">&lt;/<span class="hljs-name">DropDownButton</span>&gt;</span>

     <span class="hljs-comment">&lt;!-- 8. MenuFlyoutItem / ToggleMenuFlyoutItem: Right-click / dropdown menu items --&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">Button</span> <span class="hljs-attr">Content</span>=<span class="hljs-string">"Right-click to open menu"</span> <span class="hljs-attr">Width</span>=<span class="hljs-string">"220"</span>&gt;</span>
         <span class="hljs-tag">&lt;<span class="hljs-name">Button.Flyout</span>&gt;</span>
             <span class="hljs-tag">&lt;<span class="hljs-name">MenuFlyout</span>&gt;</span>
                 <span class="hljs-tag">&lt;<span class="hljs-name">MenuFlyoutItem</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Normal Menu Item (MenuFlyoutItem)"</span>/&gt;</span>
                 <span class="hljs-tag">&lt;<span class="hljs-name">ToggleMenuFlyoutItem</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Checkable Menu Item (ToggleMenuFlyoutItem)"</span>/&gt;</span>
                 <span class="hljs-tag">&lt;<span class="hljs-name">MenuFlyoutSeparator</span>/&gt;</span>
                 <span class="hljs-tag">&lt;<span class="hljs-name">MenuFlyoutItem</span> <span class="hljs-attr">Text</span>=<span class="hljs-string">"Exit"</span>/&gt;</span>
             <span class="hljs-tag">&lt;/<span class="hljs-name">MenuFlyout</span>&gt;</span>
         <span class="hljs-tag">&lt;/<span class="hljs-name">Button.Flyout</span>&gt;</span>
     <span class="hljs-tag">&lt;/<span class="hljs-name">Button</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">StackPanel</span>&gt;</span></code></span></pre>


<p class="wp-block-paragraph">Place your cursor over <code>Click="NormalBtn_Click"</code> and <code>Click="RepeatBtn_Click"</code>, then press F12 to generate the two empty event handler functions. No implementation logic is required for this demo. Interested readers may extend these methods to add custom functional logic.</p>


<pre class="wp-block-code"><span><code class="hljs language-cpp"><span class="hljs-keyword">void</span> winrt::App6::implementation::MainWindow::NormalBtn_Click(winrt::Windows::Foundation::IInspectable <span class="hljs-keyword">const</span>&amp; sender, 
winrt::Microsoft::UI::Xaml::RoutedEventArgs <span class="hljs-keyword">const</span>&amp; e)
{

}

<span class="hljs-keyword">void</span> winrt::App6::implementation::MainWindow::RepeatBtn_Click(winrt::Windows::Foundation::IInspectable <span class="hljs-keyword">const</span>&amp; sender,
 winrt::Microsoft::UI::Xaml::RoutedEventArgs <span class="hljs-keyword">const</span>&amp; e)
{

}
</code></span></pre>


<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/2026/07/07/winui-3-c-controls-button-controls/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		<enclosure url="https://www.foxdevelop.com/wp-content/uploads/2026/07/Video-20260702205009.mp4" length="624560" type="video/mp4" />

			</item>
	</channel>
</rss>
