使用before render变量更改文本值?

时间:2019-06-28 22:20:38

标签: c# .net wpf

我需要更改TextBlock的文本值,但是该值是在初始化渲染之前设置的。我能做什么?我建立了一个静态类来传递变量,但这似乎不起作用(我需要在渲染之前将变量初始化)。

private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
{

    var name = "test";

    StaticName.Static = (name);
}

public MainWindow()
{
    InitializeComponent();
    TextBlock.Text = StaticName.Static;
}

public static class StaticName
{
    public static string Static { get; set; }
}

1 个答案:

答案 0 :(得分:-1)

您的代码无法以这种方式工作,因为构造器总是在发生Loaded事件之前 终止。因此,在构造函数内部,static变量Static的值仍为NULL。

要解决此问题,必须将TextBox的初始化移到Loaded事件处理程序中:

public MainWindow()
{
    InitializeComponent();
    this.Loaded += MainWindow_OnLoaded;
}

private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
{
    SteamAPI.Init();
    var name = SteamFriends.GetPersonaName();

    personNameTextBox.Text = name;
}

这将使TextBox在名称显示后立即显示。