KAMISHIBAI

KAMISHIBAI is a navigation library for WPF that supports MVVM pattern on Generic Host.

View on GitHub

KAMISHIBAI 4.0.0 for WPF

KAMISHIBAI 4.0.0 removes the mandatory Windows API Code Pack dependency and makes the file dialog implementation replaceable. This is a major release because the dependency injection graph and the default runtime implementation have changed.

Important compatibility information

Review these points before upgrading from KAMISHIBAI 3.x.

Existing file dialog interfaces remain unchanged

The following public interfaces and contexts retain their existing members:

Existing calls such as presentationService.OpenFile(context) and presentationService.SaveFile(context) do not need to be rewritten.

Dependency injection contains a breaking change

WindowService now requires an IFileDialogService. KamishibaiApplicationBuilder.Build() registers the default implementation automatically, but applications that instantiate WindowService directly or assemble the service graph themselves must register and supply IFileDialogService.

The default runtime implementation has changed

KAMISHIBAI 3.x used Microsoft-WindowsAPICodePack-Shell. KAMISHIBAI 4.0 uses the public Windows Common Item Dialog COM API directly. The standard open, multiple-selection, folder-selection, save, cancel, filter, custom-place, and extension behaviors are covered by integration tests, but applications can observe differences in native validation, exception details, or operating-system-dependent presentation.

Known limitations of the new default implementation:

The Code Pack is no longer transitively referenced by Kamishibai.View

Applications that used Code Pack APIs through KAMISHIBAI’s transitive dependency must add an explicit dependency. Applications that require the exact KAMISHIBAI 3.1.0 dialog implementation should use the compatibility package.

Preserving the KAMISHIBAI 3.1.0 implementation

Install the new package:

dotnet add package Kamishibai.FileDialogs.WindowsApiCodePack --version 4.0.0

Register it before Build():

builder.Services.AddWindowsApiCodePackFileDialogs();
var app = builder.Build();

Installing the package alone does not activate it. The registration call is required.

The compatibility package:

The compatibility package therefore carries the Code Pack dependency and its Microsoft license terms. Applications that cannot accept that dependency should use the new default implementation or provide their own IFileDialogService.

See the complete 3.x to 4.0 migration guide.

Packages

Validation

Full Changelog: https://github.com/nuitsjp/KAMISHIBAI/compare/Release-3.1.0…Release-4.0.0