Skip to content

Latest commit

Β 

History

History
577 lines (457 loc) Β· 34.9 KB

File metadata and controls

577 lines (457 loc) Β· 34.9 KB

WPFDevelopers Getting Started

Get started with WPFDevelopers controls in your WPF project in three steps.

Supported .NET Versions

WPFDevelopers covers the full spectrum from .NET Framework 4.0 to .NET 10:

Framework Family Specific Versions
.NET Framework net40, net45, net451, net452, net46, net461, net462, net47, net471, net472, net48, net481
.NET Core netcoreapp3.0, netcoreapp3.1
.NET 5+ net5.0-windows, net6.0-windows, net7.0-windows, net8.0-windows, net9.0-windows, net10.0-windows

Requirements

  • Visual Studio 2026
  • .NET Framework 4.0 or later / .NET Core 3.0 or later

Step 1: Install the NuGet Package

Install via NuGet Package Manager or Package Manager Console:

Install-Package WPFDevelopers

Note: For the latest features, use the preview package:

Install-Package WPFDevelopers -Pre

Or in Visual Studio: right-click your project β†’ Manage NuGet Packages β†’ search WPFDevelopers β†’ Install.


Step 2: Configure App.xaml

Add the WD namespace and theme resources in App.xaml:

<Application x:Class="YourApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:wd="https://github.com/WPFDevelopersOrg/WPFDevelopers"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <!-- 1. Theme must be imported first -->
                <ResourceDictionary Source="pack://application:,,,/WPFDevelopers;component/Themes/Theme.xaml" />
                <!-- 2. wd:Resources must come AFTER Theme.xaml -->
                <wd:Resources />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

Theme Configuration

<wd:Resources /> supports the following modes:

Configuration Effect
<wd:Resources /> Default Light theme (follows system Light/Dark on Windows 10+)
<wd:Resources Theme="Light" /> Fixed light theme
<wd:Resources Theme="Dark" /> Fixed dark theme
<wd:Resources Color="Fuchsia" /> Custom theme color

Important: wd:Resources must be placed after Theme.xaml in MergedDictionaries, otherwise the theme will not load correctly.


Step 3: Use Controls in XAML

Declare the namespace in any XAML file:

xmlns:wd="https://github.com/WPFDevelopersOrg/WPFDevelopers"

Then use WD controls:

<Window x:Class="YourApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wd="https://github.com/WPFDevelopersOrg/WPFDevelopers"
        Title="My App" Width="800" Height="600">
    <Grid>
        <wd:BallLoading Width="100" IsLoading="True" />
    </Grid>
</Window>

Three Usage Patterns

1. Direct WD Controls

<!-- Loading animation -->
<wd:BallLoading Width="100" IsLoading="{Binding IsLoading}" />

<!-- Drawer panel -->
<wd:Drawer x:Name="DrawerTop" Position="Top">
    <wd:Drawer.Header><TextBlock Text="Title" FontSize="16" /></wd:Drawer.Header>
    <wd:Drawer.Content><TextBlock Text="Content" /></wd:Drawer.Content>
</wd:Drawer>

<!-- Multi-select ComboBox -->
<wd:MultiSelectComboBox ItemsSource="{Binding Items}" ShowType="Tag">
    <wd:MultiSelectComboBoxItem Content="Option 1" />
    <wd:MultiSelectComboBoxItem Content="Option 2" />
</wd:MultiSelectComboBox>

<!-- Step wizard -->
<wd:Step StepIndex="1">
    <wd:StepItem Content="Step 1" />
    <wd:StepItem Content="Step 2" />
    <wd:StepItem Content="Step 3" />
</wd:Step>

<!-- Carousel -->
<wd:Carousel ItemsSource="{Binding CarouselItems}" />

<!-- Radar chart -->
<wd:ChartRadar Datas="{Binding RadarDatas}" />

<!-- Bar chart -->
<wd:ChartBar Datas="{Binding BarDatas}" />

<!-- Line chart -->
<wd:ChartLine Datas="{Binding LineDatas}" />

<!-- Pie chart (LiveCharts-style) -->
<wd:ChartPie Datas="{Binding PieDatas}" />

<!-- Dashboard gauge (NuGet version) -->
<wd:Gauge Value="75" MaxValue="100" />

<!-- Circular progress bar -->
<wd:CircleProgressBar Value="75" />

2. Attached Properties on Standard WPF Controls

<!-- Badge notification -->
<Button wd:Badge.IsShow="True" wd:Badge.Text="new" Content="Messages" />

<!-- Button loading state -->
<Button wd:Loading.IsShow="True" wd:Loading.LoadingType="Normal" Content="Submit" />

<!-- TextBox watermark + clear button -->
<TextBox wd:ElementHelper.Watermark="Enter username" wd:ElementHelper.IsClear="True" />

<!-- PasswordBox monitoring -->
<PasswordBox wd:PasswordBoxHelper.IsMonitoring="True" wd:ElementHelper.Watermark="Password" />

<!-- DatePicker with time -->
<DatePicker wd:DatePickerHelper.ShowTime="True" />

<!-- Panel spacing -->
<WrapPanel wd:PanelHelper.Spacing="10">
    <Button Content="Button 1" />
    <Button Content="Button 2" />
</WrapPanel>

<!-- Corner radius -->
<Button wd:ElementHelper.CornerRadius="5" Content="Rounded" />
<TextBox wd:ElementHelper.CornerRadius="3" />
<DataGrid wd:ElementHelper.CornerRadius="3" />

<!-- Striped progress bar -->
<ProgressBar wd:ElementHelper.IsStripe="True" Value="80" />

<!-- Closable TabItem -->
<TabItem wd:ElementHelper.IsClear="True" Header="Closable Tab" />

<!-- TreeView scroll animation -->
<TreeView wd:TreeViewHelper.IsScrollAnimation="true" />

3. Static Resource Styles

<!-- Normal button -->
<Button Style="{StaticResource WD.NormalButton}" Content="Normal" />

<!-- Primary buttons (various themes) -->
<Button Style="{StaticResource WD.PrimaryButton}" Content="Primary" />
<Button Style="{StaticResource WD.SuccessPrimaryButton}" Content="Success" />
<Button Style="{StaticResource WD.WarningPrimaryButton}" Content="Warning" />
<Button Style="{StaticResource WD.DangerPrimaryButton}" Content="Danger" />

<!-- Default buttons (various themes) -->
<Button Style="{StaticResource WD.SuccessDefaultButton}" Content="Success" />
<Button Style="{StaticResource WD.WarningDefaultButton}" Content="Warning" />
<Button Style="{StaticResource WD.DangerDefaultButton}" Content="Danger" />

Common Theme Resources

WD provides a set of theme resources you can reference in XAML:

Resource Key Type Description
WD.PrimaryBrush SolidColorBrush Primary color
WD.SuccessBrush SolidColorBrush Success color
WD.WarningBrush SolidColorBrush Warning color
WD.DangerBrush SolidColorBrush Danger color
WD.InfoSolidColorBrush SolidColorBrush Info color
WD.LightBrush SolidColorBrush Light color
WD.CircularSingularSolidColorBrush SolidColorBrush Circular accent color
WD.BackgroundBrush SolidColorBrush Background color
WD.PrimaryTextBrush SolidColorBrush Primary text color
WD.WarningGeometry Geometry Warning icon

Complete Control Catalog

Important: Controls marked 🟑 Sample-only are defined in WPFDevelopers.Samples.Shared/Controls/ and are NOT part of the NuGet package (wd: namespace). They are only available in the sample project. All other controls can be used directly via the wd: prefix after NuGet installation.

Windows & Navigation

Control Source Example File Description
wd:Window NuGet MainWindow.xaml Custom window (ToolWindow / NoneTitleBar / Normal / HighTitleBar)
wd:NotifyIcon NuGet NotifyIconExample.xaml System tray icon
wd:DrawerMenu NuGet DrawerMenuExample.xaml Win10-style drawer navigation
wd:NavMenu3D NuGet NavMenu3DExample.xaml 3D animated navigation menu
wd:NavScrollPanel NuGet NavScrollPanelExample.xaml Win10 settings-style nav panel
🟑 TransitionPanel Sample-only TransitionPanelExample.xaml Transition animation panel
wd:Drawer NuGet DrawerExample.xaml Slide-out panel (Top/Bottom/Left/Right)
wd:Mask NuGet MaskExample.xaml Modal overlay
wd:AcrylicBlur NuGet AcrylicBlurExample.xaml Acrylic blur window
🟑 TaskbarItemInfo Sample-only TaskbarItemInfoExample.xaml Taskbar badge

Basic Controls & Styles

Control Example File Description
TextBox BasicControlsExample.xaml TextBox (watermark / clear button / corner radius)
PasswordBox BasicControlsExample.xaml PasswordBox (watermark / clear / monitor / plain text toggle)
ComboBox BasicControlsExample.xaml ComboBox (watermark / editable / corner radius)
CheckBox BasicControlsExample.xaml Checkbox
RadioButton BasicControlsExample.xaml Radio button
ToggleButton BasicControlsExample.xaml Toggle button
Slider BasicControlsExample.xaml Slider (horizontal / vertical)
ProgressBar BasicControlsExample.xaml Progress bar (striped / indeterminate / vertical)
DataGrid BasicControlsExample.xaml Data grid (row header selection / template columns / grid lines)
ListBox BasicControlsExample.xaml List box
ListView BasicControlsExample.xaml List view (GridView)
TreeView BasicControlsExample.xaml Tree view (scroll animation)
Expander BasicControlsExample.xaml Expander (4 directions)
GroupBox BasicControlsExample.xaml Group box
TabControl BasicControlsExample.xaml Tab control (4 directions / closable)
Menu BasicControlsExample.xaml Menu bar
Calendar BasicControlsExample.xaml Calendar
DatePicker BasicControlsExample.xaml Date picker (with time selection)

Input Controls

Control Source Example File Description
wd:ColorPicker NuGet ColorPickerExample.xaml Color picker
wd:TimePicker NuGet TimePickerExample.xaml Time picker
wd:DateRangePicker NuGet DateRangePickerExample.xaml Date range picker
wd:NumericBox NuGet NumericBoxExample.xaml Numeric input
wd:IPEditBox NuGet IPEditBoxExample.xaml IP address input
wd:MultiSelectComboBox NuGet MultiSelectComboBoxExample.xaml Multi-select combo box
🟑 MultiSelectSearchComboBox Sample-only MultiSelectSearchComboBoxExample.xaml Searchable multi-select combo box
wd:Password NuGet PasswordExample.xaml Password show/hide toggle
wd:VerifyCode NuGet VerifyCodeExample.xaml CAPTCHA drawing
🟑 RoundPicker Sample-only RoundPickerExample.xaml Circular color picker
wd:RulerControl NuGet RulerControlExample.xaml Ruler control
🟑 Selector Sample-only SelectorExample.xaml Selector control
wd:Dial NuGet DialExample.xaml Dial pad
wd:GestureUnlock NuGet GestureUnlockExample.xaml Gesture pattern unlock
wd:SvgViewer NuGet SvgViewerExample.xaml SVG viewer

Loading Animations

Control Source Example File Description
wd:RingLoading NuGet RingLoadingExample.xaml Ring loading animation
wd:BallLoading NuGet BallLoadingExample.xaml Bouncing ball animation
🟑 StreamerLoading Sample-only StreamerLoadingExample.xaml Streamer animation
wd:WaitLoading NuGet WaitLoadingExample.xaml Wait animation
wd:CycleLoading NuGet CycleLoadingExample.xaml Cycle animation
wd:RollLoading NuGet RollLoadingExample.xaml Rolling animation
wd:Loading (attached) NuGet LoadingExample.xaml Button/control loading state

Charts & Data Visualization

Control Source Example File Description
wd:ChartRadar NuGet ChartRadarExample.xaml Radar chart
wd:ChartBar NuGet ChartBarExample.xaml Bar chart
wd:ChartLine NuGet ChartLineExample.xaml Line chart
wd:ChartPie NuGet ChartPieExample.xaml Pie chart
🟑 Dashboard Sample-only DashboardExample.xaml Dashboard gauge (tick marks follow progress)
🟑 PieControl Sample-only PieControlExample.xaml Pie chart statistics
wd:Gauge NuGet GaugeExample.xaml Gauge control
🟑 LineChart Sample-only LineChartExample.xaml Line chart (alternate implementation)
wd:CircleProgressBar NuGet CircleProgressBarExample.xaml Circular progress bar
wd:Step NuGet StepExample.xaml Step wizard
wd:BreadCrumbBar NuGet BreadCrumbBarExample.xaml Breadcrumb navigation
wd:Pagination NuGet PaginationExample.xaml Pagination control
🟑 TimeLineControl Sample-only TimeLineExample.xaml Timeline (Gitee-style)
wd:Thermometer NuGet ThermometerExample.xaml Thermometer
wd:DataGridFilter NuGet DataGridFilterExample.xaml DataGrid column filter engine

Layout & Panels

Control Source Example File Description
wd:Carousel NuGet CarouselExample.xaml Carousel
wd:CarouselEx NuGet CarouselExampleEx.xaml Emphasizer carousel
wd:CircleMenu NuGet CircleMenuExample.xaml Circular menu
wd:SixGridView NuGet SixGirdViewExample.xaml Six-column grid layout
wd:WaterfallPanel NuGet WaterfallPanelExample.xaml Waterfall / masonry panel
wd:VirtualizingWrapPanel NuGet VirtualizingWrapPanelExample.xaml Virtualizing WrapPanel
🟑 TransformLayout Sample-only TransformLayoutExample.xaml Draggable, resizable, rotatable control
wd:DrapView NuGet DrapViewExample.xaml Drag-and-drop view
wd:Spacing (attached) NuGet SpacingExample.xaml Panel child spacing
wd:PanningItems NuGet PanningItemsExample.xaml Panning control (touch swipe)
🟑 ScrollViewerAnimation Sample-only ScrollViewerAnimationExample.xaml Animated scrollbar
wd:IconicThumbnail NuGet IconicThumbnailExample.xaml Iconic thumbnail

Animation & Effects

Control Source Example File Description
wd:BreatheLight NuGet BreatheLightExample.xaml Breathing light animation
wd:SpotLight NuGet SpotLightExample.xaml Spotlight effect
wd:EdgeLight NuGet EdgeLightExample.xaml Edge marquee light
🟑 RainbowButtons Sample-only RainbowButtonsExample.xaml Rainbow buttons
wd:Shake NuGet ShakeExample.xaml Window shake
🟑 BubblleControl Sample-only BubblleControlExample.xaml Bubble animation
wd:StarrySky NuGet StarrySkyExample.xaml Starry sky animation
🟑 SnowCanvas Sample-only SnowCanvasExample.xaml Christmas tree & snow canvas
🟑 SpeedRockets Sample-only SpeedRocketsExample.xaml Speed rocket animation
🟑 CountdownTimer Sample-only CountdownTimerExample.xaml Countdown timer animation
🟑 NumberCard Sample-only NumberCardExample.xaml 3D flip countdown cards
wd:AnimationGrid NuGet AnimationGridExample.xaml Animation grid
🟑 LogoAnimation Sample-only LogoAnimationExample.xaml Login logo animation
🟑 SongWords Sample-only SongWordsExample.xaml Lyrics scroll animation
wd:AnimationAudio NuGet AnimationAudioExample.xaml Audio waveform visualization
🟑 Barrage Sample-only BarrageExample.xaml Danmaku / barrage control
🟑 CanvasHandWriting Sample-only CanvasHandWritingExample.xaml Smooth canvas handwriting
🟑 Drawing Sample-only DrawingExample.xaml Freehand drawing
🟑 DrawPrize Sample-only DrawPrizeExample.xaml Lottery wheel

Media & Image Processing

Control Source Example File Description
wd:ScreenCut NuGet ScreenCutExample.xaml Screen capture (pen / arrow annotation)
wd:CropImage NuGet CropImageExample.xaml Image cropping
wd:CropAvatar NuGet CropAvatarExample.xaml Avatar cropping selector
🟑 CropControl Sample-only CropControlExample.xaml Image nine-grid cutter
🟑 CutImage Sample-only CutImageExample.xaml User avatar cropping solution
wd:Magnifier NuGet MagnifierExample.xaml Magnifier

Notifications & Messages

Control Source Example File Description
wd:Badge (attached) NuGet BadgeExample.xaml Badge notification
wd:Toast NuGet ToastExample.xaml Toast message popup
wd:Tag NuGet TagExample.xaml Tag control
wd:PathIcon NuGet PathIconExample.xaml Vector path icon
wd:AllPathIcon NuGet AllPathIconExample.xaml Built-in icon browser
MessageBox (static class) NuGet MessageBoxExample.xaml Message dialog

Other Controls

Control Source Example File Description
🟑 ZooSemy Sample-only ZooSemyExample.xaml Skeuomorphic rotary knob (volume)
🟑 OtherControl Sample-only OtherControlExample.xaml Torch & other fun controls
🟑 Desktop Sample-only DesktopBackground.xaml Dynamic desktop wallpaper
🟑 AMap Sample-only BingAMapExample.xaml Map integration (Bing / AutoNavi)
🟑 LoginWindow Sample-only LoginExample.xaml Login window template
🟑 ChatEmoji Sample-only ChatEmojiExample.xaml Emoji + text chat

MessageBox Usage Tutorial

MessageBox is a static message dialog class provided by WPFDevelopers, designed as a drop-in replacement for System.Windows.MessageBox with a more polished and customizable appearance.

Note: MessageBox is a static class, not a XAML control. It can only be called from C# code.

Import the Namespace

To avoid conflicts with System.Windows.MessageBox, use an alias:

using MessageBox = WPFDevelopers.Controls.MessageBox;

Method Signatures

MessageBox.Show() provides 5 overloads:

// 1. Message text only (default OK button, no icon)
MessageBoxResult Show(string messageBoxText, Window owner = null, double buttonRadius = 0d, bool isDefault = true)

// 2. Message text + caption
MessageBoxResult Show(string messageBoxText, string caption, Window owner = null, double buttonRadius = 0d, bool isDefault = true)

// 3. Message text + caption + buttons
MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, Window owner = null, double buttonRadius = 0d, bool isDefault = true)

// 4. Message text + caption + icon
MessageBoxResult Show(string messageBoxText, string caption, MessageBoxImage icon, Window owner = null, double buttonRadius = 0d, bool isDefault = true)

// 5. Message text + caption + buttons + icon (full signature)
MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, Window owner = null, double buttonRadius = 0d, bool isDefault = true)

Parameters

Parameter Type Default Description
messageBoxText string β€” Message content
caption string β€” Dialog title
button MessageBoxButton OK Button set: OK / OKCancel / YesNo / YesNoCancel
icon MessageBoxImage None Icon type: Information / Warning / Error / Question
owner Window null Parent window. When provided, the dialog centers on the owner with an overlay mask
buttonRadius double 0 Button corner radius in pixels. Use 4 for rounded buttons
isDefault bool true Whether the first button is the default button (triggered by Enter key)

Icon and Color Mapping

MessageBoxImage Icon Color
Information Info icon Success (green)
Warning Warning icon Warning (orange)
Error Error icon Danger (red)
Question Question icon Primary (blue)

Usage Examples

1. Information Dialog

// File deleted successfully, with rounded buttons
MessageBox.Show("File deleted successfully.", "Message", MessageBoxButton.OK, MessageBoxImage.Information, buttonRadius: 4);

2. Warning Dialog

// Uses default OK button
MessageBox.Show("Performing this action may cause the file to become inaccessible!", "Warning", MessageBoxImage.Warning);

3. Error Dialog

MessageBox.Show("The file does not exist.", "Error", MessageBoxImage.Error);

4. Confirmation Dialog (with Result Handling)

var result = MessageBox.Show("The file does not exist. Continue?", "Confirm", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);

switch (result)
{
    case MessageBoxResult.Yes:
        // User clicked "Yes"
        break;
    case MessageBoxResult.No:
        // User clicked "No"
        break;
    case MessageBoxResult.Cancel:
        // User clicked "Cancel" or closed the dialog
        break;
}

5. With Owner Window (with Overlay Mask)

// When owner is passed, the dialog centers on the parent window and shows an overlay mask
MessageBox.Show("Operation successful!", "Info", MessageBoxButton.OK, MessageBoxImage.Information, owner: this, buttonRadius: 4);

Interaction Behavior

  • Close methods: Click the close button (top-right), press Escape, or click any button
  • Owner window: When owner is provided, the dialog centers on the parent window and displays a mask overlay. Without an owner, it auto-detects the current window or centers on screen
  • Button text: Automatically localized via LanguageManager (follows system language)

Full Sample Project

If you prefer not to configure from scratch, reference the sample project in this repository:

src/WPFDevelopers.Samples.Shared/
β”œβ”€β”€ App.xaml                              # App entry point & theme config
β”œβ”€β”€ ExampleViews/                         # Full control example pages
β”‚   β”œβ”€β”€ MainWindow.xaml                   # Main window (left menu + right content)
β”‚   β”œβ”€β”€ UsageGuide.xaml                   # Usage guide page
β”‚   β”œβ”€β”€ UsageColor.xaml                   # Color usage guide
β”‚   β”œβ”€β”€ BasicControlsExample.xaml         # Basic control examples
β”‚   β”œβ”€β”€ Loading/                          # Loading animation series
β”‚   β”‚   β”œβ”€β”€ BallLoadingExample.xaml
β”‚   β”‚   β”œβ”€β”€ RingLoadingExample.xaml
β”‚   β”‚   β”œβ”€β”€ StreamerLoadingExample.xaml
β”‚   β”‚   β”œβ”€β”€ WaitLoadingExample.xaml
β”‚   β”‚   β”œβ”€β”€ CycleLoadingExample.xaml
β”‚   β”‚   └── RollLoadingExample.xaml
β”‚   β”œβ”€β”€ DrawerMenu/                       # Drawer menu sub-pages
β”‚   β”‚   β”œβ”€β”€ HomePage.xaml
β”‚   β”‚   β”œβ”€β”€ EmailPage.xaml
β”‚   β”‚   └── EdgePage.xaml
β”‚   β”œβ”€β”€ NavScrollPanel/                   # Nav settings panel sub-pages
β”‚   β”‚   β”œβ”€β”€ About.xaml
β”‚   β”‚   β”œβ”€β”€ PrivacySettings.xaml
β”‚   β”‚   β”œβ”€β”€ PlaybackSettings.xaml
β”‚   β”‚   β”œβ”€β”€ ShortcutKeys.xaml
β”‚   β”‚   └── DesktopLyrics.xaml
β”‚   β”œβ”€β”€ LoginWindow/                      # Login window template
β”‚   β”‚   β”œβ”€β”€ CustomControl/
β”‚   β”‚   β”œβ”€β”€ CustomStyle/
β”‚   β”‚   └── LoginExample.xaml
β”‚   β”œβ”€β”€ CropAvatar/                       # Avatar cropping
β”‚   β”‚   β”œβ”€β”€ CropAvatarExample.xaml
β”‚   β”‚   └── CropAvatarWindow.xaml
β”‚   β”œβ”€β”€ NumberCard/                       # Countdown cards
β”‚   β”‚   β”œβ”€β”€ NumberCardExample.xaml
β”‚   β”‚   └── NumberCardControl.xaml
β”‚   β”œβ”€β”€ SpeedRockets/                     # Rocket animation
β”‚   β”‚   β”œβ”€β”€ SpeedRocketsExample.xaml
β”‚   β”‚   └── SpeedRocketsMini.xaml
β”‚   β”œβ”€β”€ ZooSemy/                          # Skeuomorphic knob
β”‚   β”‚   β”œβ”€β”€ ZooSemyExample.xaml
β”‚   β”‚   └── VolumeControl.xaml
β”‚   β”œβ”€β”€ CanvasHandWriting/                # Handwriting
β”‚   β”‚   └── CanvasHandWritingExample.xaml
β”‚   β”œβ”€β”€ Desktop/                          # Desktop wallpaper
β”‚   β”‚   β”œβ”€β”€ DesktopBackground.xaml
β”‚   β”‚   └── DesktopPlayVideo.xaml
β”‚   β”œβ”€β”€ Passwrod/                         # Password controls
β”‚   β”‚   β”œβ”€β”€ PasswordExample.xaml
β”‚   β”‚   └── PasswordWithPlainText.xaml
β”‚   β”œβ”€β”€ Map/                              # Map
β”‚   β”‚   └── BingAMapExample.xaml
β”‚   β”œβ”€β”€ DrapView/                         # Drag view
β”‚   β”‚   └── DrapViewExample.xaml
β”‚   └── ... (more example files)
β”œβ”€β”€ Controls/                             # Sample helper controls (CodeViewer, NavigateMenu, etc.)
β”œβ”€β”€ ViewModels/                           # Sample ViewModels
β”œβ”€β”€ Models/                               # Data models
β”œβ”€β”€ Helpers/MenuEnum.cs                   # All example category enum
└── Converts/                             # Value converters

Each example page includes a built-in code viewer (CodeViewer) that lets you inspect the corresponding XAML/C# source code directly.