Наследование интерфейса INotifyPropertyChanged классом с 2 свойствами - C#

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. Подскажите ,пожалуйста ,как при наследовании интерфейса INotifyPropertyChanged классом у которого есть 2 и более свойства при их изменении для каждого из них вызывалось своё событие? В приведенном мной примере я подписываю оба метода (ch,ch2) к событию PropertyChange и они выполняются оба.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;

namespace ConsoleApplication1
{
    class Program
    {
        private static Class1 cl=new Class1();
 
        static void Main(string[] args)
        {
            cl.PropertyChanged += ch;
            cl.PropertyChanged += ch2;
            cl.Index = 20;
            cl.Str = "ssssssssssssssssss";
            Console.ReadLine();
        }
 
        private static void ch(object sender, EventArgs e)
        {
            Console.WriteLine("New value="+cl.Index);
        }
 
        private static void ch2(object sender, EventArgs e)
        {
            Console.WriteLine("New value=" + cl.Str);
        }
    }
 
    class Class1 : INotifyPropertyChanged
    {
        private int index;
        private string str;
 
        public event PropertyChangedEventHandler PropertyChanged;
 
        public int Index
        {
            get { return index; }
            set
            {
                index = value;
                OnProperty("Index");
            }
        }
 
        public string Str
        {
            get { return str; }
            set
            {
                str = value;
                OnProperty("Str");
            }
        }
 
        protected void OnProperty(string name)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(name));
            }
        }
    }
}

Решение задачи: «Наследование интерфейса INotifyPropertyChanged классом с 2 свойствами»

textual
Листинг программы
class Program
    {
        private static Class1 cl=new Class1();
 
        static void Main(string[] args)
        {
            //Class1 cl = new Class1();
            cl.PropertyChanged += ch;
            cl.Index = 20;
            cl.Str = "ssssssssssssssssss";
            Console.ReadLine();
        }
 
        static void ch(object sender, PropertyChangedEventArgs args)
        {
            //Class1 cl = (Class1)sender;
            if (args.PropertyName == "Index")
            {
                Console.WriteLine("Index. New value=" + cl.Index);
            }
            else if (args.PropertyName == "Str")
            {
                Console.WriteLine("Str. New value=" + cl.Str);
            }
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы