Наследование интерфейса 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);
}
}
}