WPF在应用程序启动时加载texbox内容

时间:2018-12-02 14:00:53

标签: wpf textbox wmi startup

我遇到以下情况:一个有2页的WPF应用程序(使用导航)。其中一个页面上有一个文本框,该文本框使用WMI查询和注册表数据显示一些系统信息。 这个问题的问题在于,当我导航到该页面时,信息总是会刷新,这也意味着所有正在执行的任务都已重做,这使texbox需要一些时间才能开始显示信息(是的,一些WMI查询非常耗时)。 由于我需要的99%的数据不需要刷新(不会更改),我该如何只执行一次,然后将其绑定到该文本框,以使它不总是刷新?

home.xaml.cs(页面)中的文本框代码

private void TextBox1_Loaded(object sender, RoutedEventArgs e)
    {
        BackgroundWorker bw = new BackgroundWorker();
        bw.WorkerReportsProgress = true;
        bw.DoWork += new DoWorkEventHandler(delegate (object o, DoWorkEventArgs args)
        {

        });
        bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(delegate (object o, RunWorkerCompletedEventArgs args)
        {
            TextBox1.Text = Registry.GetValue(@"HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0", "ProcessorNameString", null).ToString().Replace("(R)", "").Replace("(TM)", "") + Environment.NewLine;
            TextBox1.Text += "Memory:  " + getRAMsize() + Environment.NewLine;
            TextBox1.Text += "Free Space:  " + GetTotalFreeSpace(sysdrive) + " GB" + Environment.NewLine;
            if (Is64BitSystem)
            {
                TextBox1.Text += getOS() + " 64bit" + Environment.NewLine;
            }
            else
            {
                TextBox1.Text += getOS() + " 32bit" + Environment.NewLine;
            }
            TextBox1.Text += diskname() + Environment.NewLine;
            TextBox1.Text += "MAC Address : " + System.Text.RegularExpressions.Regex.Replace(GetMacAddress().ToString(), ".{2}", "$&-").TrimEnd('-') + Environment.NewLine;
            TextBox1.Text += av();
        });
        bw.RunWorkerAsync();
    }

它做什么与我想要什么:每次我导航到它时,文本框都会刷新(当然是textbox_loaded ...),并且需要一两秒钟。我想禁用刷新。我希望它加载一次并保留这些值,直到再次打开该应用程序

2 个答案:

答案 0 :(得分:0)

您可以在第一次运行时设置bool标志。

public void Initilize()
{
    if (!_Initilized)
    {
        _Initilized = true;

        // do initial queries here...
    }
    myusercontrol.DataContext = MyViewModel;
}

答案 1 :(得分:0)

哇...经过反复试验,我不敢相信将代码放到TextBox1_Initialized事件中这么容易。

fold