Skip to content

lgztx96/CommunityToolkit.WinUI

Repository files navigation

WinUI Community Toolkit (C++ Port)

This repository contains C++ ports of CommunityToolkit components.

The goal is to allow seamless usage of these controls in WinUI 3 / C++ projects.


NuGet Packages

You can install the C++ WinUI Community Toolkit packages via NuGet (it also supports .NET):

Package NuGet
XamlToolkit.WinUI.Native NuGet
XamlToolkit.WinUI.Helpers.Native NuGet
XamlToolkit.WinUI.Converters.Native NuGet
XamlToolkit.WinUI.Media.Native NuGet
XamlToolkit.Labs.WinUI.Native NuGet
XamlToolkit.WinUI.Controls.Native NuGet

Note: When using the C# version, make sure to set the <TargetFramework> to:

<TargetFramework>net8.0-windows10.0.26100.0</TargetFramework>

Controls

MarkdownTextBlock

MarkdownTextBlock supports syntax highlighting for C#, C++, XML, JSON, and Shell.

MarkdownTextBlock

Marquee

Marquee

OpacityMaskView

OpacityMaskView

Shimmer

Shimmer

TokenView

TokenView

ColorPicker / ColorPickerButton

ColorPicker

DockPanel

DockPanel

ImageCropper

ImageCropper

LayoutTransformControl

LayoutTransformControl

MetadataControl

MetadataControl

HeaderedContentControl / HeaderedItemsControl / HeaderedTreeView

HeaderedContentControl

ConstrainedBox

ConstrainedBox

RadialGauge

⚠️ The ValueStringFormat property does not support .NET string format syntax and only supports std::format syntax.

RadialGauge

RangeSelector

RangeSelector

Segmented

Segmented

SettingsCard / SettingsExpander

SettingsCard

ContentSizer / GridSplitter / PropertySizer

GridSplitter

StaggeredLayout

StaggeredLayout

SwitchPresenter

SwitchPresenter

TabbedCommandBar

TabbedCommandBar

TokenizingTextBox

TokenizingTextBox

UniformGrid

UniformGrid

WrapPanel

WrapPanel

AttachedDropShadow / AttachedCardShadow

AttachedCardShadow


Features

  • Native C++/WinRT implementation for WinUI 3.
  • API style compatible with CommunityToolkit controls.

Build Steps

  • Requires Visual Studio 2022 or later for compilation.
  • To build XamlToolkit.Labs.WinUI, you need to install tree-sitter via vcpkg:
vcpkg install tree-sitter:x64-windows-static

Markdown parsing uses md4c (https://github.com/mity/md4c).
Since vcpkg does not support configuring UTF-16 character set for md4c, the project directly includes the md4c source code.

Usage

NuGet

Add nuget packages to your project.

Add an XML namespace like this in your XAML

xmlns:ui="using:XamlToolkit.WinUI"
xmlns:controls="using:XamlToolkit.WinUI.Controls"
xmlns:convertors="using:XamlToolkit.WinUI.Convertors"
xmlns:labs="using:XamlToolkit.Labs.WinUI"
xmlns:media="using:XamlToolkit.WinUI.Media"

Sample