![]() |
VOOZH | about |
dotnet add package I-Synergy.Framework.UI.WinUI --version 2026.10618.11733
NuGet\Install-Package I-Synergy.Framework.UI.WinUI -Version 2026.10618.11733
<PackageReference Include="I-Synergy.Framework.UI.WinUI" Version="2026.10618.11733" />
<PackageVersion Include="I-Synergy.Framework.UI.WinUI" Version="2026.10618.11733" />Directory.Packages.props
<PackageReference Include="I-Synergy.Framework.UI.WinUI" />Project file
paket add I-Synergy.Framework.UI.WinUI --version 2026.10618.11733
#r "nuget: I-Synergy.Framework.UI.WinUI, 2026.10618.11733"
#:package I-Synergy.Framework.UI.WinUI@2026.10618.11733
#addin nuget:?package=I-Synergy.Framework.UI.WinUI&version=2026.10618.11733Install as a Cake Addin
#tool nuget:?package=I-Synergy.Framework.UI.WinUI&version=2026.10618.11733Install as a Cake Tool
Modern Windows UI framework for building next-generation Windows applications with WinUI 3. This package provides a complete WinUI implementation of the I-Synergy Framework UI services, controls, and patterns for Windows 10+ and Windows 11.
👁 NuGet
👁 License
👁 .NET
👁 Platform
Install the package via NuGet:
dotnet add package I-Synergy.Framework.UI.WinUI
Setup your WinUI 3 application with I-Synergy Framework:
using ISynergy.Framework.UI;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.UI.Xaml;
public partial class App : Application
{
private IHost _host;
private Microsoft.UI.Xaml.Window _window;
public App()
{
InitializeComponent();
}
protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
_host = Host.CreateDefaultBuilder()
.ConfigureServices((context, services) =>
{
// Core services
services.AddSingleton<ILanguageService, LanguageService>();
services.AddSingleton<IMessengerService, MessengerService>();
services.AddSingleton<IBusyService, BusyService>();
// WinUI services
services.AddSingleton<IDialogService, DialogService>();
services.AddSingleton<INavigationService, NavigationService>();
services.AddSingleton<IThemeService, ThemeService>();
services.AddSingleton<IFileService<FileResult>, FileService>();
services.AddSingleton<IClipboardService, ClipboardService>();
services.AddSingleton<ICameraService, CameraService>();
services.AddSingleton<IUpdateService, UpdateService>();
// ViewModels
services.AddTransient<MainViewModel>();
services.AddTransient<ShellViewModel>();
})
.Build();
await _host.StartAsync();
// Apply theme
var themeService = _host.Services.GetRequiredService<IThemeService>();
themeService.ApplyTheme();
// Create and activate window
_window = _host.Services.GetRequiredService<MainWindow>();
_window.Activate();
}
}
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Background="{ThemeResource SystemControlAcrylicElementBrush}">
<CommandBar>
<AppBarButton Icon="Add" Label="New" Command="{Binding NewCommand}"/>
<AppBarButton Icon="OpenFile" Label="Open" Command="{Binding OpenCommand}"/>
<AppBarButton Icon="Save" Label="Save" Command="{Binding SaveCommand}"/>
<AppBarSeparator/>
<AppBarButton Icon="Setting" Label="Settings" Command="{Binding SettingsCommand}"/>
</CommandBar>
</Grid>
<Frame Grid.Row="1"
x:Name="MainFrame"/>
<Grid Grid.Row="2" Background="{ThemeResource SystemControlAcrylicElementBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="{Binding StatusMessage}"
Margin="12,8"
VerticalAlignment="Center"/>
<ProgressRing Grid.Column="1"
Width="20" Height="20"
Margin="12,8"
IsActive="{Binding BusyService.IsBusy}"/>
</Grid>
</Grid>
</Window>
using Microsoft.UI.Xaml;
public sealed partial class MainWindow : Window
{
public MainWindow(MainViewModel viewModel)
{
InitializeComponent();
ExtendsContentIntoTitleBar = true;
SetTitleBar(AppTitleBar);
DataContext = viewModel;
}
}
using ISynergy.Framework.Mvvm.ViewModels;
using ISynergy.Framework.Mvvm.Commands;
public class ProductViewModel : ViewModel
{
private readonly IProductService _productService;
public AsyncRelayCommand SaveCommand { get; }
public AsyncRelayCommand DeleteCommand { get; }
public ProductViewModel(
ICommonServices commonServices,
IProductService productService,
ILogger<ProductViewModel> logger)
: base(commonServices, logger)
{
_productService = productService;
SaveCommand = new AsyncRelayCommand(SaveAsync, CanSave);
DeleteCommand = new AsyncRelayCommand(DeleteAsync);
}
private bool CanSave() => !string.IsNullOrEmpty(Name) && IsValid;
private async Task SaveAsync()
{
try
{
CommonServices.BusyService.StartBusy("Saving product...");
await _productService.SaveAsync(Product);
await CommonServices.DialogService.ShowInformationAsync(
"Product saved successfully",
"Success");
}
catch (Exception ex)
{
await CommonServices.DialogService.ShowErrorAsync(ex, "Error");
}
finally
{
CommonServices.BusyService.StopBusy();
}
}
private async Task DeleteAsync()
{
var result = await CommonServices.DialogService.ShowMessageAsync(
"Are you sure you want to delete this product?",
"Confirm Delete",
MessageBoxButtons.YesNo);
if (result == MessageBoxResult.Yes)
{
await _productService.DeleteAsync(Product.Id);
await CommonServices.NavigationService.GoBackAsync();
}
}
// Show custom ContentDialog
private async Task EditSettingsAsync()
{
await CommonServices.DialogService
.ShowDialogAsync<SettingsDialog, SettingsViewModel, Settings>();
}
}
using ISynergy.Framework.Mvvm.Abstractions.Services;
public class ProfileViewModel : ViewModel
{
private readonly ICameraService _cameraService;
public AsyncRelayCommand TakePhotoCommand { get; }
public AsyncRelayCommand PickPhotoCommand { get; }
public BitmapImage ProfileImage
{
get => GetValue<BitmapImage>();
set => SetValue(value);
}
public ProfileViewModel(
ICommonServices commonServices,
ICameraService cameraService,
ILogger<ProfileViewModel> logger)
: base(commonServices, logger)
{
_cameraService = cameraService;
TakePhotoCommand = new AsyncRelayCommand(TakePhotoAsync);
PickPhotoCommand = new AsyncRelayCommand(PickPhotoAsync);
}
private async Task TakePhotoAsync()
{
var photo = await _cameraService.TakePhotoAsync();
if (photo is not null)
{
var bitmapImage = new BitmapImage();
using (var stream = await photo.OpenReadAsync())
{
await bitmapImage.SetSourceAsync(stream.AsRandomAccessStream());
}
ProfileImage = bitmapImage;
}
}
private async Task PickPhotoAsync()
{
var photo = await _cameraService.PickPhotoAsync();
if (photo is not null)
{
var bitmapImage = new BitmapImage();
using (var stream = await photo.OpenReadAsync())
{
await bitmapImage.SetSourceAsync(stream.AsRandomAccessStream());
}
ProfileImage = bitmapImage;
}
}
}
<controls:BladeView ItemsSource="{x:Bind ViewModel.Blades, Mode=OneWay}"
SelectedItem="{x:Bind ViewModel.SelectedBlade, Mode=TwoWay}" />
<controls:ImageBrowser Images="{x:Bind ViewModel.ProductImages, Mode=OneWay}"
SelectedImage="{x:Bind ViewModel.SelectedImage, Mode=TwoWay}"
AllowAdd="True"
AllowRemove="True" />
<controls:SplashScreen x:Class="MyApp.CustomSplashScreen"
Logo="/Assets/logo.png"
Message="Loading application..."
ShowProgress="True" />
WinUI 3 provides modern Fluent Design features:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
</Grid>
<Grid Background="{ThemeResource SystemControlAcrylicWindowBrush}">
</Grid>
<Button Style="{StaticResource AccentButtonStyle}"
Content="Click Me">
</Button>
<Border CornerRadius="8"
Shadow="{StaticResource SharedShadow}">
<Image Source="/Assets/image.png"/>
</Border>
The WinUI framework includes 40+ built-in theme palettes with modern Fluent Design:
using ISynergy.Framework.Mvvm.Abstractions.Services;
// Theme is automatically applied on startup
// Accent color is synchronized with Windows system accent
// Show theme selection to users
private async Task ShowThemeSelectionAsync()
{
await CommonServices.DialogService
.ShowDialogAsync<ThemeWindow, ThemeViewModel, ThemeStyle>();
}
Customize the Windows 11 title bar:
public sealed partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// Extend content into title bar
ExtendsContentIntoTitleBar = true;
SetTitleBar(AppTitleBar);
// Customize title bar colors
if (AppWindowTitleBar.IsCustomizationSupported())
{
var titleBar = AppWindow.TitleBar;
titleBar.BackgroundColor = Colors.Transparent;
titleBar.ButtonBackgroundColor = Colors.Transparent;
titleBar.ButtonHoverBackgroundColor = Color.FromArgb(25, 255, 255, 255);
}
}
}
Using CommunityToolkit.WinUI.Behaviors:
<Page xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:behaviors="using:CommunityToolkit.WinUI.Behaviors">
<TextBox>
<interactivity:Interaction.Behaviors>
<behaviors:FocusBehavior />
</interactivity:Interaction.Behaviors>
</TextBox>
<ListView ItemsSource="{x:Bind Items}">
<interactivity:Interaction.Behaviors>
<behaviors:SelectAllBehavior />
</interactivity:Interaction.Behaviors>
</ListView>
</Page>
Use x:Bind instead of Binding for better performance in WinUI 3.
Always test on both Windows 10 and Windows 11 for compatibility.
WinUI 3 apps use a separate process from Windows Shell, providing better isolation and stability.
For issues, questions, or contributions, please visit the GitHub repository.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0-windows10.0.26100 net10.0-windows10.0.26100 is compatible. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.10618.11733 | 0 | 6/18/2026 |
| 2026.10618.11702-preview | 0 | 6/18/2026 |
| 2026.10616.12121 | 82 | 6/16/2026 |
| 2026.10616.11904-preview | 82 | 6/16/2026 |
| 2026.10616.10010 | 90 | 6/15/2026 |
| 2026.10615.12240-preview | 85 | 6/15/2026 |
| 2026.10615.10047-preview | 86 | 6/14/2026 |
| 2026.10614.10112-preview | 87 | 6/13/2026 |
| 2026.10612.12341-preview | 90 | 6/12/2026 |
| 2026.10612.12110-preview | 85 | 6/12/2026 |
| 2026.10612.11941-preview | 85 | 6/12/2026 |
| 2026.10610.10831 | 96 | 6/10/2026 |
| 2026.10610.10706-preview-pr... | 87 | 6/10/2026 |
| 2026.10609.11323-preview | 88 | 6/9/2026 |
| 2026.10607.11905-preview | 87 | 6/7/2026 |
| 2026.10607.11454-preview | 81 | 6/7/2026 |
| 2026.10606.11854-preview | 86 | 6/6/2026 |
| 2026.10603.11238-preview | 92 | 6/3/2026 |
| 2026.10602.12203-preview | 97 | 6/2/2026 |
| 2026.10602.11949-preview | 97 | 6/2/2026 |