Как использовать static propertychanged в базовом классе? [Дубликат]

Как упоминалось в @kgr, MySQL 8.0.11 внесла некоторые изменения в метод аутентификации.

Я открыл отчет об ошибке phpMyAdmin об этом: https://github.com/phpmyadmin /phpmyadmin/issues/14220.

MySQL 8.0.4-rc отлично работал для меня, и я вроде как смешно для MySQL сделать такое изменение в выпуске уровня патча.

1
задан david hol 22 November 2015 в 07:42
поделиться

2 ответа

Событие с изменением статического свойства должно быть объявлено в классе WiresharkFile (т. е. класс, который также объявляет статическое свойство). Он не будет работать, если он объявлен в базовом классе.

public class WiresharkFile : BaseObservableObject
{
    public static event PropertyChangedEventHandler StaticPropertyChanged;

    private static void OnStaticPropertyChanged(string propertyName)
    {
        var handler = StaticPropertyChanged;
        if (handler != null)
        {
            handler(null, new PropertyChangedEventArgs(propertyName));
        }
    }

    // static property here
}
1
ответ дан Clemens 26 August 2018 в 15:04
поделиться

Поскольку ваш create PropertyChangedEventHandler не является частью реального интерфейса INotifyPropertyChanged, привязка не распознает, что было вызвано событие уведомления, поэтому оно не вытаскивает новое значение из TotalPacketsSent. Чтобы сделать обновление привязки, попробуйте что-то вроде этого: Поместите в класс WiresharkFile:

    private static WiresharkFile This;

    public WiresharkFile()
    {
        This = this;
    }
    private static volatile int _totalPacketsSent;

    public static int TotalPacketsSent
    {
        get { return _totalPacketsSent; }
        set
        {
            _totalPacketsSent = value;
            OnStaticPropertyChanged(This);
        }
    }

- Код обработчика:

protected static void OnStaticPropertyChanged(object sender, [CallerMemberName]string propertyName = null)
    {
        var baseObservable = sender as BaseObservableObject;
        if(baseObservable == null) return;
        baseObservable.OnPropertyChanged(propertyName);
    }

, на мой взгляд, вам не нужен PropertyChangedEventHandler событие в классе BaseObservableObject.

приветствует,

0
ответ дан Ilan 26 August 2018 в 15:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: