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

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

2024.03.18
XML
カテゴリ: C#.NET


以下は、C# WPFでINotifyPropertyChangedを実装した基底クラスの例です。


```csharp

using System;

using System.ComponentModel;

using System.Runtime.CompilerServices;


namespace WPFNotifyPropertyChangedExample

{

    public class ObservableObject : INotifyPropertyChanged

    {

        public event PropertyChangedEventHandler PropertyChanged;


        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)

        {

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

        }


        protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)

        {

            if (Equals(storage, value))

            {

                return false;

            }


            storage = value;

            OnPropertyChanged(propertyName);

            return true;

        }

    }

}

```


この`ObservableObject`クラスを使用すると、他のViewModelクラスで継承するだけで、INotifyPropertyChangedを実装するコードを省略できます。これにより、ViewModelクラスでプロパティの変更通知を簡単に行うことができます。


以下は、この基底クラスを使用するViewModelの例です。


```csharp

using System;


namespace WPFNotifyPropertyChangedExample

{

    public class MyViewModel : ObservableObject

    {

        private string _name;

        public string Name

        {

            get { return _name; }

            set { SetProperty(ref _name, value); }

        }


        private int _age;

        public int Age

        {

            get { return _age; }

            set { SetProperty(ref _age, value); }

        }

    }


    class Program

    {

        static void Main(string[] args)

        {

            var viewModel = new MyViewModel();

            viewModel.PropertyChanged += (sender, e) =>

            {

                Console.WriteLine($"Property {e.PropertyName} changed");

            };


            viewModel.Name = "John";

            viewModel.Age = 30;


            Console.ReadLine();

        }

    }

}

```


このようにして、`ObservableObject`を基底クラスとして使用することで、ViewModel内のプロパティの変更通知を簡単に実装できます。






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

Last updated  2024.03.18 07:30:44


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

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