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

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

2024.04.21
XML
カテゴリ: C#.NET


以下に、INotifyPropertyChangedとIDataErrorInfoを実装したサンプルコードを示します。


### INotifyPropertyChangedの実装



using System.ComponentModel;


public class PersonModel : INotifyPropertyChanged

{

    private string _name;

    private int _age;


    public string Name

    {

        get { return _name; }

        set

        {

            if (_name != value)

            {

                _name = value;

                OnPropertyChanged(nameof(Name));

            }

        }

    }


    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));

    }

}

```


### IDataErrorInfoの実装


```csharp

using System;

using System.Collections;


public class PersonViewModel : IDataErrorInfo

{

    private PersonModel _person;


    public PersonViewModel()

    {

        _person = new PersonModel();

    }


    public string Name

    {

        get { return _person.Name; }

        set { _person.Name = value; }

    }


    public int Age

    {

        get { return _person.Age; }

        set { _person.Age = value; }

    }


    public string Error => null;


    public string this[string columnName]

    {

        get

        {

            string error = null;

            switch (columnName)

            {

                case "Name":

                    if (string.IsNullOrWhiteSpace(Name))

                        error = "Name is required.";

                    break;

                case "Age":

                    if (Age < 0 || Age > 150)

                        error = "Age must be between 0 and 150.";

                    break;

            }

            return error;

        }

    }

}

```


これらのサンプルでは、PersonModelクラスがINotifyPropertyChangedを実装し、NameとAgeプロパティの変更通知を提供します。また、PersonViewModelクラスがIDataErrorInfoを実装し、バリデーションルールを定義しています。Viewはこれらのプロパティにバインドされ、ユーザーの入力やプロパティの変更に応じてエラーメッセージが表示されます。






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

Last updated  2024.04.21 14:32:29


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

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