「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2024.04.21
XML
カテゴリ: C#.NET


WPFのXAMLでコンバーターを使用するには、`Converter` クラスを実装し、その後、XAMLで使用したい場所でリソースとして定義します。ここでは、和暦に変換するためのコンバーターを例に説明します。


まず、和暦に変換するコンバーターを定義します。



using System;

using System.Globalization;

using System.Windows.Data;


public class JapaneseCalendarConverter : IValueConverter

{

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)

    {

        if (value is DateTime)

        {

            JapaneseCalendar calendar = new JapaneseCalendar();

            DateTime date = (DateTime)value;

            string era = calendar.GetEra(date) == 1 ? "M" : "T"; // M: 昭和, T: 平成

            int year = calendar.GetYear(date);

            string month = date.Month.ToString().PadLeft(2, '0');

            string day = date.Day.ToString().PadLeft(2, '0');


            switch (era)

            {

                case "M":

                    year -= 1925; // 昭和元年からの経過年数

                    break;

                case "T":

                    year -= 1988; // 平成元年からの経過年数

                    break;

            }


            return $"{era}{year}年{month}月{day}日";

        }


        return value;

    }


    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)

    {

        throw new NotSupportedException();

    }

}

```


次に、XAMLでこのコンバーターを使用します。


```xml

<Window x:Class="WpfApp.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:local="clr-namespace:WpfApp"

        Title="MainWindow" Height="450" Width="800">

    <Window.Resources>

        <local:JapaneseCalendarConverter x:Key="JapaneseCalendarConverter"/>

    </Window.Resources>


    <Grid>

        <TextBlock Text="{Binding Date, Converter={StaticResource JapaneseCalendarConverter}}" HorizontalAlignment="Center" VerticalAlignment="Center"/>

    </Grid>

</Window>

```


この例では、`Window.Resources` セクションで `JapaneseCalendarConverter` をリソースとして定義しています。その後、`TextBlock` の `Text` プロパティにバインドしていますが、その際に `Converter` プロパティにコンバーターを指定しています。これにより、`TextBlock` に表示される日付が和暦に変換されます。


注意点として、コンバーターを使用する際には、必ず `ConverterParameter` プロパティを指定することが重要です。`ConverterParameter` を指定しないと、コンバーターが正しく動作しない可能性があります。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.04.21 14:59:28


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

© Rakuten Group, Inc.
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: