Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
3 / 3 / 1
Регистрация: 31.03.2015
Сообщений: 24
1

Inotifypropertychanged propertychanged, где это событие задается?

18.06.2015, 23:47. Показов 1562. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
почти во всех примерах показано так;

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Model:INotifyPropertyChanged {
    public event PropertyChangedEventHandler PropertyChanged;
 
    protected void NotifyPropertyChanged(string name) {
       var propertyChanged = PropertyChanged;
        if (propertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(name));
    }
 
    public string Name {
        get { return name; } 
        set {
            name = value;
            NotifyPropertyChanged("Name");
        } 
    }
}
либо так, чтобы не делать лишнии присваивания и проверки
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Model:INotifyPropertyChanged {
    public event PropertyChangedEventHandler PropertyChanged = (o, e) => { };
 
    protected void NotifyPropertyChanged(string name) {
        PropertyChanged(this, new PropertyChangedEventArgs(name));
    }
 
    public string Name {
        get { return name; } 
        set {
            name = value;
            NotifyPropertyChanged("Name");
        } 
    }
}
но явно нигде событие PropertyChanged не регистрируется какому нибуть обработчику(методу), получается компилятор сам это делает ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2015, 23:47
Ответы с готовыми решениями:

Событие из базового класса, рефлексия, PropertyChanged
Доброго времени суток. Прошу подсказать, схема следующая: - Работает в форме, с три вьюшкой. -...

Объясните, где задается функция, где расчитывается и как она называется
Объясните где задается функция, где расчитывается и как она называется.заранее спасибо #include...

MaskedTextBox1 событие по системным часам - что должно вызывать это событие?
Добрый день! Помогите разобраться с ситуацией пожалуйста. На форме висит элемент maskedTextBox с...

Где задается AUTO_INCREMENT ?
Доброе время суток. Занимаюсь созданием бд для регистрации пользователей на сайте. Но при создании...

1
Эксперт .NETАвтор FAQ
10411 / 5141 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
19.06.2015, 12:13 2
compit, Контрол или класс, который обрабатывает этот объект ищет у него реализацию интерфейса INotifyPropertyChanged и если она есть - подписывается на событие PropertyChanged.
Пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System;
using System.ComponentModel;
using System.Windows.Forms;
 
namespace WindowsFormsApplication299
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            var dummyObject = new DummyClass();
 
            new MyLabel(dummyObject){Parent = this};
        }
    }
 
    public class MyLabel : Label
    {
        private object source;
 
        public MyLabel(object source)
        {
            this.source = source;
            //если объект поддерживает INotifyPropertyChanged, то подписываемся на событие
            if(source is INotifyPropertyChanged)
                (source as INotifyPropertyChanged).PropertyChanged += MyLabel_PropertyChanged;
        }
 
        void MyLabel_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            //получаем измененное свойство
            Text = source.GetType().GetProperty(e.PropertyName).GetValue(source, null).ToString();
        }
    }
 
    class DummyClass : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged = delegate { };
 
        private string name;
 
        public string Name
        {
            get { return name; }
            set
            {
                name = value;
                NotifyPropertyChanged("Name");
            }
        }
 
        public DummyClass()
        {
            //свойство Name периодически получает новое значение
            Application.Idle += delegate { Name = DateTime.Now.ToLongTimeString(); };
        }
 
        protected void NotifyPropertyChanged(string name)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }
}
0
19.06.2015, 12:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2015, 12:13
Помогаю со студенческими работами здесь

Если есть форма и есть событие, а процедуры, его обрабатывающей нет в исходниках, то как это событие обрабатывается?
Друзья! Изучаю синтаксис дельфи. Ну то есть к примеру такой код: procedure...

Где задаётся значение DecimalSeparator
Сабж, заранее спасибо

Где задаётся поведение addslashes?
echo addslashes('text " text'); На моём веб-сервере функция выше выводит text " text, а хостинг...

Использование TOP N, где N задается пользователем, it's possible?
Гуру Access'a обращаюсь к Вам за помощью, и прошу не пинать сильно. Вторую неделю осваиваю только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru