• Stars
    star
    324
  • Rank 129,708 (Top 3 %)
  • Language
    C#
  • License
    Other
  • Created almost 3 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A safe space to collaborate and engineer solutions from the prototyping stage all the way through polished finalized component for the Windows Community Toolkit.

๐Ÿงช Windows Community Toolkit Labs (Preview) ๐Ÿงช

Windows Community Toolkit Labs Social Image

Welcome to the home of Windows Community Toolkit Labs. A place for all new components to be developed in 'experiments' for the Windows Community Toolkit (built on top of WinUI 2, WinUI 3, and Uno Platform)! Find out more about Toolkit Labs in our blog post here. It includes more about our motivations for having this space as well as how to setup the NuGet feed required to easily use experiments found in this repo.

This is the starting place for all new features to make it into the Windows Community Toolkit. It is a useful prototyping space as well as a space to work collaboratively on polishing a feature. This allows a final PR into the main Toolkit repo to go as smoothly as possible once a feature is ready to go.

Getting Started

Try out our Sample App live in your browser!

See the list of our current open experiments to try here!

You can find the corresponding CommunityToolkit.Labs packages in our Azure DevOps Feed, find out more about Preview Packages here.

https://pkgs.dev.azure.com/dotnet/CommunityToolkit/_packaging/CommunityToolkit-Labs/nuget/v3/index.json

If you find an experiment useful, please up-vote ๐Ÿ‘ its corresponding issue and comment with any feedback. Each experiment has an issue assigned to it with the experiment label for tracking. Please file any feedback or issues about that experiment on that singular issue. For any other questions or concerns, please open a Discussion.

Otherwise, you can clone the repo, open the components directory, navigate within the folder for a particular experiment and open up it's solution file in Visual Studio. Run one of the project heads (ExperimentName.Uwp/Wasm/WinAppSDK) to see its samples.

Clone the repository

The tooling is in a submodule, so you'll need to use --recurse-submodules when cloning or pulling for the first time:

git clone --recurse-submodules https://github.com/CommunityToolkit/Labs-Windows.git

Build Requirements

  • Visual Studio 2022 (UWP & Desktop Workloads for .NET)
  • .NET 6 SDK
  • Windows App SDK
  • Windows SDK 19041
  • Run dotnet tool restore from the project root to install SlnGen
  • Run build scripts from the Developer Command Prompt for Visual Studio or from elsewhere after adding MSBuild.exe to your PATH

Adding a new Experiment

Note: In Preview we're currently not accepting new experiments beyond our trial list to ensure our infrastructure is stabilized, if you'd like to contribute please see where you can lend a hand with Labs itself here If you have an idea for a component though, please feel free to open a discussion here.

To start a new experiment, open up a new Discussion to propose your idea with the community. Be sure to follow the template and highlight reasons why and how your idea can aid other developers.

Once there is traction and your idea is approved, an issue will be created to track your experiment and its progress.

Then you can fork the Labs repo, create a new branch, and start working on your feature (or porting over your existing prototype).

dotnet new --install .\tooling\ProjectTemplate\

cd components

dotnet new ctk-component -n MyExperimentNameHere

Read more about creating a new experiment from the template folder here.

Then open a PR, not everything needs to be done in your initial PR, but some basically functionality and a usage example should exist. The Labs space is a great place to work on something over time, get feedback from the community, and collaborate with others. However, your initial PR should compile and have enough content for folks to understand how to leverage your component.

Modifying an Experiment

First fork the repo and create a new branch specific to your modification.

To work on an experiment you can navigate to it's subdirectory and open its own solution file. This will let you work on the feature, samples, docs, or unit tests for that specific component only in isolation.

Then submit a PR back to the repo with your modifications. Whoever owns the experiment can then work with you to integrate your changes. A maintainer will merge a PR once sign-off from the experiment owner is received.

When is an Experiment done?

Not all experiments are successful, and that's ok! That's why we experiment! ๐Ÿ‘จโ€๐Ÿ”ฌ๐Ÿ”ฌ๐Ÿ‘ฉโ€๐Ÿ”ฌ

If there is enough interest in an experiment, it can be time to move it into the main Windows Community Toolkit repo. These experiments should have all the components required implemented like a sample, documentation, and unit tests.

Open up an issue on the main Toolkit repo using the Toolkit Labs Transfer Issue Template. (TODO: Link) Use that issue to discuss where in the Toolkit the new component should be placed and what release it should be shipped in. An initial review pass of the code will happen as well. Once the transfer issue is approved, open up a PR to copy over the experiment to its new home.

Building the Sample App

First ensure you've met the Build Requirements or the build scripts will fail.

Next you can build the main Sample App solution to see all the experiments currently available in this repository by running the GenerateAllSolution.bat script in the repo root.

Then just open the CommunityToolkit.AllComponents.sln solution in Visual Studio. You can run one of the project heads such as CommunityToolkit.App.WinAppSdk to run the sample app for that platform.

If you'd like to run a head beyond UWP, Wasm, or the WinAppSDK, you'll need to run the UseTargetFrameworks.ps1 script first in the tooling/MultiTarget directory. e.g. .\UseTargetFrameworks.ps1 -targets all

If you'd like to test on Uno + Windows App SDK over Uno + UWP, run the UseUnoWinUI.ps1 script. e.g. .\UseUnoWinUI.ps1 -targets 3

If there's a specific experiment you're interested in instead, you can navigate to its directory and open up it's individual solution to see samples specific to that feature. You can also read the next section to find out how to grab a pre-built NuGet package for each feature available here.

๐Ÿ“„ Code of Conduct

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information see the .NET Foundation Code of Conduct.

๐Ÿข .NET Foundation

This project is supported by the .NET Foundation.

๐Ÿ† Contributors

Toolkit Contributors

Made with contrib.rocks.

More Repositories

1

WindowsCommunityToolkit

The Windows Community Toolkit is a collection of helpers, extensions, and custom controls. It simplifies and demonstrates common developer tasks building .NET apps with UWP and the Windows App SDK / WinUI 3 for Windows 10 and Windows 11. The toolkit is part of the .NET Foundation.
C#
5,887
star
2

dotnet

.NET Community Toolkit is a collection of helpers and APIs that work for all .NET developers and are agnostic of any specific UI platform. The toolkit is maintained and published by Microsoft, and part of the .NET Foundation.
C#
3,007
star
3

Maui

The .NET MAUI Community Toolkit is a community-created library that contains .NET MAUI Extensions, Advanced UI/UX Controls, and Behaviors to help make your life as a .NET MAUI developer easier
C#
2,203
star
4

MVVM-Samples

Sample repo for MVVM package
1,129
star
5

Lottie-Windows

Lottie-Windows is a library (and related tools) for rendering Lottie animations on Windows 10 and Windows 11.
C#
627
star
6

Windows

Collection of controls for WinUI 2, WinUI 3, and Uno Platform developers. Simplifies and demonstrates common developer tasks building experiences for Windows with .NET.
C#
538
star
7

Maui.Markup

The .NET MAUI Markup Community Toolkit is a community-created library that contains Fluent C# Extension Methods to easily create your User Interface in C#
C#
474
star
8

Microsoft.Toolkit.Win32

ARCHIVE - This repository contained XAML Islands wrapper controls and tooling for XAML Islands with WinUI 2, see readme for more info about XAML Islands with WinUI 3 and the WindowsAppSDK.
C#
381
star
9

ColorCode-Universal

This is a port of ColorCode to .NET Standard. The original Html only formatter has been separated from the Logic, so now it can produce Syntax Highlighted code for any output. This Project can currently produce HTML, and Render to UWP RichTextBlocks.
C#
216
star
10

Maui.NativeLibraryInterop

Maui.NativeLibraryInterop is a community-created library of binding samples to help .NET MAUI developers interop with native libraries more easily
C#
170
star
11

Graph-Controls

Set of Helpers and Controls for Windows development using the Microsoft Graph.
C#
155
star
12

Datasync

A collection of libraries that implement a client-server system used for synchronizing data from a cloud-based database.
C#
45
star
13

SceneLoader

A library for creating 3D Windows.UI.Composition.Scenes from glTF.
C#
36
star
14

Tooling-Windows-Submodule

Community Toolkit infrastructure for use as a submodule 'tooling' directory in other repositories.
C#
30
star
15

Sample-TabView-TearOff

Sample demonstrating using the TabView UWP control in the Windows Community Toolkit and Windows Template Studio's Multiple View feature to 'tear-off' tabs to create windows and drag them between windows.
C#
27
star
16

Labs-IntelligentAPIs

Intelligent APIs aim to make machine learning (ML) tasks easier for UWP developers to leverage in their applications without needing ML expertise or creating a new model.
C#
21
star
17

announcements

Subscribe to this repo to be notified of Announcements and changes in the Windows Community Toolkit
13
star
18

Sample-Graph-ContosoNotes

A simple note taking app infused with the power of Microsoft Graph and built with the Windows Community Toolkit!
C#
13
star
19

design-assets

Windows Community Toolkit design guide and templates
10
star
20

PWAWindowsHelpers

Helpers for Progressive Windows Apps running on Windows
JavaScript
9
star
21

WindowsCommunityToolkit-wiki

Wiki fork for main WindowsCommunityToolkit repo with project Documentation and Guidance
8
star
22

github-bot-uwp-toolkit

GitHub bot for the UWP Community Toolkit project to manage issues and Pull Requests
TypeScript
7
star
23

ToolkitLabs.dev

Repository for https://toolkitlabs.dev/ site
JavaScript
6
star
24

Labs-GazeControls

Set of user controls that can be reused in different applications with eye gaze input.
C#
6
star
25

Sample-Windows-CppWinRT

Sample which demonstrates using the Windows Community Toolkit within a C++/WinRT UWP application
C++
5
star
26

ReleaseNotesGenerator

dotnet core console app that generates release notes from pull requests for the UWP Community Toolkit
C#
4
star