Статическая переменная, привязанная к текстовому блоку, не обновлена - PullRequest
0 голосов
/ 11 ноября 2019

Я использую текстовый блок с привязкой к переменной в статическом классе. Если переменная изначально установлена ​​в классе, текст обновляется. Но когда переменная изменяется внутри метода, связанный текстовый блок не изменяется.

Я устанавливаю значение initialy равным «initial text», а после этого я пытаюсь изменить его в методе. Но текст никогда не меняется, даже если я вижу, что он изменяется в отладчике.

Я добавил текстовый блок с привязкой к статической переменной:

<TextBlock Text="{x:Static local:InfoBanner.InfoBannerText}"/>

В коде я реализовалследующий класс:

public static class InfoBanner
{
    static InfoBanner()
    {
        infoBannerText = "initial text";
    }

    public static void showMessage(Window window)
    {
        infoBannerText = "changed text";
        Storyboard sb = window.FindResource("storyInfoBanner") as Storyboard;
        sb.Begin();
    }

    public static string infoBannerText;

    public static String InfoBannerText
    {
        get { return infoBannerText; }
        set {
            infoBannerText = value;
            StaticPropertyChanged?.Invoke(null, FilterStringPropertyEventArgs);
        }
    }

    public static readonly PropertyChangedEventArgs FilterStringPropertyEventArgs = new PropertyChangedEventArgs(nameof(InfoBannerText));
        public static event PropertyChangedEventHandler StaticPropertyChanged;

}

Я ожидал, что текст обновляется каждый раз, когда я вызываю метод showMessage. Но текст сохраняет значение "исходный текст"

Кто-нибудь имеет представление, что я делаю неправильно? Лучшие реграды hafisch

1 Ответ

1 голос
/ 11 ноября 2019

Кроме того, вы должны обновить свойство, а не его вспомогательное поле, вызвав

InfoBannerText = "changed text";

, вы должны использовать Binding для свойства Text вместо простого присваивания:

Text="{Binding Path=(local:InfoBanner.InfoBannerText)}"
...