WinUI3Utilities 1.1.3.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package WinUI3Utilities --version 1.1.3.2
NuGet\Install-Package WinUI3Utilities -Version 1.1.3.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WinUI3Utilities" Version="1.1.3.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add WinUI3Utilities --version 1.1.3.2
#r "nuget: WinUI3Utilities, 1.1.3.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install WinUI3Utilities as a Cake Addin
#addin nuget:?package=WinUI3Utilities&version=1.1.3.2

// Install WinUI3Utilities as a Cake Tool
#tool nuget:?package=WinUI3Utilities&version=1.1.3.2

WinUI3Utilities

Useful template methods for WinUI3 projects

Build

.NET Windows

Usage

The following is the general usage. For more details, see the XAML docs of the corresponding attributes.

Initialize the CurrentContext

It is recommended to assign the CurrentContext.Window in the first line of the MainWindow's constructor, because it is possible that other methods in the program will call CurrentContext.Window before the end of the constructor. This will avoid unassigned exceptions.

App.xaml.cs:

using Microsoft.UI.Xaml;
using WinUI3Utilities;

namespace Sample;

public partial class App : Application
{
    public App()
    {
        InitializeComponent();
        CurrentContext.Title = nameof(Sample);
    }

    protected override void OnLaunched(LaunchActivatedEventArgs args)
    {
        _ = new MainWindow();
        AppHelper.Initialize(new()
        {
            Size = WindowHelper.EstimatedWindowSize(),
            ...
        });
    }
}

MainWindow.xaml.cs:

using Microsoft.UI.Xaml;
using WinUI3Utilities;

namespace Sample;

public sealed partial class MainWindow : Window
{
    public MainWindow()
    {
        CurrentContext.Window = this;
        InitializeComponent();
    }
}

Settings Persistence

Only for packaged applications.

AppContext.cs:

using Windows.Storage;
using WinUI3Utilities.Attributes;

namespace Sample;

[AppContext<AppConfig>]
public static partial class AppContext
{
    public static string AppLocalFolder { get; private set; } = null!;

    public static void Initialize()
    {
        AppLocalFolder = ApplicationData.Current.LocalFolder.Path;
        InitializeConfigurationContainer();
        AppConfig = LoadConfiguration() is not { } appConfigurations)
            ? new() : appConfigurations;
    }

    public static void SetDefaultAppConfig() => AppConfig = new();

    public static AppConfig AppConfig { get; private set; } = null!;
}

AppConfig.cs:

using WinUI3Utilities.Attributes;

namespace Sample;

[GenerateConstructor]
public partial record AppConfig
{
    public int WindowWidth { get; set; } = 1280;
    public int WindowHeight { get; set; } = 720;
    ...
}

When saving configuration, you can use the following code:

AppContext.SaveConfiguration(AppContext.AppConfig)

Localization

Generate all the .resw files under the specified namespace.

Reference

Sample.csproj

<Project Sdk="Microsoft.NET.Sdk">
    ... 
    <PropertyGroup>
        <EnableDefaultPriItems>false</EnableDefaultPriItems>
    </PropertyGroup>
    <Target Name="InjectAdditionalFiles" BeforeTargets="GenerateMSBuildEditorConfigFileShouldRun">
        <ItemGroup>
            <AdditionalFiles Include="@(PRIResource)" SourceItemGroup="PRIResource" />
        </ItemGroup>
    </Target>
    <ItemGroup>
        <CompilerVisibleItemMetadata Include="AdditionalFiles" MetadataName="SourceItemGroup" />
    </ItemGroup>
    ...
    <ItemGroup>
        <PRIResource Include="XXX\APage.resw" />
        <PRIResource Include="XXX\BWindow.resw" />
    </ItemGroup>
    ...
</Project>

AssemblyInfo.cs:

[assembly: LocalizedStringResources(nameof(Sample))]

XXX\APage.resw: ...

XXX\BWindow.resw: ...

NuGet GitHub

Contact Me

Poker

License

MIT License

Product Compatible and additional computed target framework versions.
.NET net7.0-windows10.0.19041 is compatible.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on WinUI3Utilities:

Repository Stars
Pixeval/Pixeval
Wow. Yet another Pixiv client!
Version Downloads Last updated
1.1.6.7 1,645 4/8/2024
1.1.6.3 109 3/30/2024
1.1.6.2 1,499 3/2/2024
1.1.6.1 1,311 2/13/2024
1.1.5.9 249 2/7/2024
1.1.5.8 574 1/22/2024
1.1.5.3 818 12/30/2023
1.1.5 127 12/29/2023
1.1.4.5 373 12/20/2023
1.1.4.3 2,204 7/4/2023
1.1.4 143 6/29/2023
1.1.3.2 175 6/18/2023
1.1.3 211 4/14/2023
1.1.2 171 4/12/2023
1.1.1.1 197 4/9/2023
1.1.1 191 4/8/2023
1.1.0 215 4/2/2023
1.0.13 274 3/11/2023
1.0.12.1 232 3/8/2023
1.0.12 229 3/7/2023
1.0.11.1 252 3/2/2023
1.0.11 257 3/1/2023
1.0.10 272 2/22/2023
1.0.9 446 1/23/2023
1.0.8 352 1/17/2023
1.0.7 309 1/16/2023
1.0.6 357 1/5/2023
1.0.5.1 332 1/4/2023
1.0.5 323 1/3/2023
1.0.4 361 1/1/2023
1.0.3 312 1/1/2023
1.0.2 303 12/31/2022
1.0.1 300 12/31/2022
1.0.0 304 12/31/2022