[C#] ドッキング機能付きのアプリケーションテンプレート

C#

汎用アプリケーションテンプレート

DockableAppTemplate は AvalonDock を使用したアプリケーションテンプレートです。スキンの変更・多言語化に関する機能を実装しています。

動作サンプル

ウィンドウのドッキング

AvalonDock は WPF アプリのドッキングウィンドウをサポートするライブラリです。以下のようなよくあるドッキングウィンドウのアプリケーションが作成できます。

スキンの変更

また、スキンの機能もサポートしており、見た目のカスタマイズが簡単にできます。

多言語化対応

このアプリケーションテンプレートには、多言語化のための機能も実装されています。XAML では Loc というエクステンションが実装されており、以下のような記述で AppName という部分が、言語ごとに定義した文字列に置き換えられます。

<Window x:Class="DockableAppTemplate.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"
        xmlns:local="clr-namespace:DockableAppTemplate"
        xmlns:m="clr-namespace:DockableAppTemplate.Localize.Markup"
        xmlns:xcad="http://schemas.xceed.com/wpf/xaml/avalondock"
        mc:Ignorable="d"
        Title="{m:Loc AppName}" Height="600" Width="800">
        ...

言語ごとの定義は下記のような埋め込みのリソースデータ(XML)です。こちらを言語ごとに作成しておくと、アプリケーション起動時に自動的に読み替えられます。

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<StringLocalizationTable>
  <StringItem id="AppName" context="" translation="アプリケーションテンプレート" />
  ...  
</StringLocalizationTable>

この言語ごとの文字列切り替えをソース側で実装したい場合、string の拡張メソッドである Localize() を呼び出します。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        Title = "AppName".Localize();
    }
...

こちらの多言語化に関する実装は Sony ATF を参考にしました。

ソースコード

ソースコードはこちらです。ライセンスは Unlicense で、どなたでも自由に改変・再配布可能です。

環境構築

プロジェクトをダウンロードし、NuGet から Xceed.Products.Wpf.ToolKit.AvalonDock をインストールします。下のキャプチャで示した上の二つをインストールしてください。

インストールが完了すれば、ビルドが通るようになり、アプリケーションの開発が始められます!

コメント

タイトルとURLをコピーしました