C # WPF Обновить метку на окне из 2-го файла кода CS - PullRequest
0 голосов
/ 28 января 2011

Новичок, извините за глупый вопрос, но по какой-то причине у меня возникла реальная проблема с этой простой маленькой проблемой. У меня есть метка и текстовый блок в окне WPF, и я пытаюсь обновить их из файла кода 2-го CS. Я попробовал приведенный ниже код, но ярлык не обновляется ... любая помощь или руководство очень ценится!

  • 820File.cs

    MainWindow main = new MainWindow();
    string status820Text = "Now importing blah";
    string status820Label = "Now importing blah";
    main.Update820Status(ref status820Text, ref status820Label);
    
  • MainWindow.cs

    public void Update820Status(ref string status820Text, ref string status820Label)
    {
        this.StatusLabel.Content =status820Label;
        this.StatusTextBlock.Text = status820Text;
    }
    

... и он работает, но Label и TextBlock не обновляются или, скорее, не отображают пропущенный текст.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 28 января 2011

Когда вы пишете main = new MainWindow(), вы создаете совершенно новый экземпляр MainWindow, который не имеет ничего общего с существующим окном на экране.

Вам необходимо передать существующее MainWindowэкземпляр.

0 голосов
/ 01 апреля 2016

Следующий код работает в WPF

axml в вашем окне:

 <Label x:Name="lblStatus" Foreground="Red" Content=""/>

код на вашей странице:

private void Button_Click(object sender, RoutedEventArgs e)
{
   Label lbl = (Label)Application.Current.MainWindow.FindName("lblStatus");
   lbl.Content = "New text";
}
0 голосов
/ 07 июня 2011

Это будет работать в WinForms, а не в WPF-окне.

Попробуйте вместо этого добавить параметр.А затем прочитайте его после закрытия нового окна (или добавьте обработчик событий для немедленного обновления).

820File.cs

MyWindow w = new MyWindow();
w.MyProperty = "Now importing blah"; // Here we set the initial text
w.ShowDialog(); // Show a modal dialog so this class waits for the changed text
string changedText = w.MyProperty; // Here we read the changed text

MyWindow

public partial class Mywindow : Window
{
    public string MyProperty { get; set; }

    public MyWindow()
    {
    }
    private void btnOk_Click(object sender, RoutedEventArgs e)
    {
        MyProperty = "Some new text"; // Set the text to something new
        this.Close();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...