0

У меня есть WPF окно под название WorkSpace в котором есть

<TextBlock x:Name="TBAlert" .../>

И есть некий класс А в котором я пытаюсь обратиться к этому текстбокс

 public static async Task DoAlert(string line)
    {
        WorkSpace.TBAlert.Visibility = Visibility.Visible;
        WorkSpace.TBAlert.Text = line;
        await Task.Delay(2000);
        WorkSpace.TBAlert.Visibility = Visibility.Hidden;
    }

Выдает ошибку, что для не статичного элемента требуется ссылка на объект.

П.С. Я только учусь, звучит как что то базовое) я пытался гуглить не че не нашел_) подскажите хотя бы как загуглить, если слишком базовый вопрос)

Весь Класс с этим методом, выглядит примерно так.

    public static void Initialize() 
    {
        WorkSpace.BaseCreateEvent += BaseCreate;
    }
}
static public void BaseCreate(string worker)
{
    string line = &quot;Создание базы данных&quot;;
    DoLog(worker, line);
}

static public async void DoLog(string worker, string whatHappens)
{
    string line = DateTime.Now.ToString();
    line += &quot; &quot; + worker + &quot; &quot; + whatHappens;
    using (StreamWriter sw = new StreamWriter(&quot;log.txt&quot;, true))
    {
        sw.WriteLine(line);
    }
    await DoAlert(line);
}

public static async Task DoAlert(string line)
{
    WorkSpace.TBAlert.Visibility = Visibility.Visible;
    WorkSpace.TBAlert.Text = line;
    await Task.Delay(2000);
    WorkSpace.TBAlert.Visibility = Visibility.Hidden;
}

Enya
  • 11
  • https://ru.stackoverflow.com/a/835223/220553 А вообще, у вас тут все изначально не так. Не забывайте, что WPF - это XAML и привязки, а вы почему-то игнорируете их. Ваши = Visibility.Visible; должны быть в XAML, а в C# должны быть лишь данные. – EvgeniyZ Aug 11 '22 at 14:18
  • Не че не понял честно говоря) Решил через костыли) – Enya Aug 11 '22 at 15:05
  • Ну вот советую понять и начать изучать сразу правильный подход к разработке WPF проекта. Повторю - WPF это не WinForms, тут в первую очередь используется XAML для дизайна проекта, а также Binding для привязки дизайна к данным. У вас не должно быть в проекте x:Name и потом обращение в коде по имени к контролу, если вы это делаете - значит у вас проблемы. – EvgeniyZ Aug 11 '22 at 15:12
  • Когда-то я писал под WPF движок тост-нотификашек. https://stackoverflow.com/a/61564124/12888024 для примера поизучайте, как оно работает, много нового узнаете. – aepot Aug 11 '22 at 15:47

0 Answers0