Изменить содержимое MainWindow с других страниц - PullRequest
0 голосов
/ 24 января 2020

В моем главном окне приложения WPF есть элемент Badged (из материала):

Это мой код:

<materialDesign:Badged BadgePlacementMode="Left" 
                       Name="RequestBadge" 
                       Badge="3" 
                       VerticalAlignment="Center">
     <Button Content="Show Requests" ..... />
</materialDesign:Badged>

Я хочу динамически изменять содержимое Badge.

Я добавляю эту функцию в коде:

public void setBadge(int num)
{
    RequestBadge.Badge = num;
}

Но когда я пытаюсь вызвать эту функцию с других страниц, я получаю эту ошибку:

Объект ссылка обязательна для незаполненного c поля, метода или свойства PL.MainWindow.setBadge(int)

enter image description here

Ответы [ 2 ]

1 голос
/ 24 января 2020

вам нужно найти открытый экземпляр MainWindow:

var mw = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
mw?.SetBadge(counter);
0 голосов
/ 24 января 2020

Самым быстрым решением будет использование одноэлементного шаблона для доступа к вашему MainWindow, и с этим создайте метод stati c в вашем MainWindow, который устанавливает ваш значок:

private static MainWindow _instance;

public MainWindow()
{
    _instance = this;
    ...
}

public static void SetBadge(int num)
{
    _instance.setBadge(num);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...