Что такое каноническая развернутая форма?

Забавно, что после дня поиска без везения и, наконец, отправил мой вопрос, вдруг я нашел еще один поток, который говорит ту же самую проблему с ответом -> Thread с ответом

Чтобы повторить, очевидно, INotifyPropertyChanged по-прежнему является ответом на мою проблему. Разница в том, что я раньше подписывался на событие в конструкторе ContainerClass. Что-то вроде:

public ContainerClass()
{
    NestedClassInstance.PropertyChanged += delegate { this.Invalidate(); };
}

Хотя очевидно, что нужно сделать, это подписаться или повторно подписаться на это событие в телережиме NestedClass. Что-то вроде:

public class ContainerClass : Control
{
    private NestedClass _nestedClassInstance = new NestedClassInstance();
    public NestedClass NestedClassInstance
    {
        get => _nestedClassInstance;
        set
        {
            if (_nestedClassInstance != null)
                _nestedClassInstance.PropertyChanged -= delegate { this.Invalidate(); };
            _nestedClassInstance = value;
            _nestedClassINstance.PropertyChanged += delegate { this.Invalidate(); };
        }
    }
}

Там у вас есть. Конец другого маршрута кодирования.

EDIT: На самом деле я все еще думаю, является ли это фактическим решением или нет, поскольку, если мы имеем в виду метаданные класса Font, он не обязательно использует INotifyProperty или любой другой вид EventHandler для события с измененным свойством. Но в любом случае это делает трюк.

0
задан Mahfuzur Rahman 19 January 2019 в 01:18
поделиться