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

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

2024.03.14
XML
カテゴリ: C#.NET


以下は、C#WPFで`IValueConverter`を使用するサンプルコードです。この例では、`IValueConverter`を実装して、データバインディング中に値の変換を行います。


まず、`IValueConverter`を実装したカスタムのコンバータを作成します。


```csharp

using System;

using System.Globalization;

using System.Windows.Data;


public class AgeToStringConverter : IValueConverter

{

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

    {

        if (value is int age)

        {

            // 例として、18歳未満なら"未成年"、18歳以上なら"成人"を返す

            return age < 18 ? "未成年" : "成人";

        }

        return "不明";

    }


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

    {

        throw new NotImplementedException();

    }

}

```


次に、このコンバータを使用して値を変換するXAMLファイルを作成します。


```xml

<Window x:Class="ValueConverterExample.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:ValueConverterExample"

        mc:Ignorable="d"

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

    <Window.Resources>

        <local:AgeToStringConverter x:Key="AgeConverter"/>

    </Window.Resources>

    <Grid>

        <StackPanel>

            <TextBox x:Name="ageTextBox" Text="{Binding Age, UpdateSourceTrigger=PropertyChanged}"/>

            <TextBlock Text="{Binding Age, Converter={StaticResource AgeConverter}}"/>

        </StackPanel>

    </Grid>

</Window>

```


最後に、ビューモデルを作成してXAMLファイルにバインドします。


```csharp

using System.ComponentModel;


public class MainViewModel : INotifyPropertyChanged

{

    private int age;

    public int Age

    {

        get { return age; }

        set

        {

            if (age != value)

            {

                age = value;

                OnPropertyChanged(nameof(Age));

            }

        }

    }


    public event PropertyChangedEventHandler PropertyChanged;


    protected virtual void OnPropertyChanged(string propertyName)

    {

        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

    }

}

```


このコードでは、`AgeToStringConverter`を使用して`TextBox`に入力された年齢を"未成年"または"成人"に変換して、`TextBlock`に表示しています。






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

Last updated  2024.03.14 04:19:37


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

© Rakuten Group, Inc.
X
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: