当我在另一种方法中更改控件时,为什么不更新控件?

时间:2015-05-01 10:04:21

标签: c# wpf

public partial class Person : Window
{
    private static TabControl tabControl;
    public Person()
    {
              InitializeComponent();
              tabControl = new TabControl();
              grid.Children.Add(tabControl);
    }

    public void someMethod(String name){
        TabItem newTab = new TabItem();
        newTab.Header = name;
        tabControl.Items.Add(newTab);
    }
}

public class Update{
    public void createGUI(String name){
        Person newPerson = new Person();
        newPerson.someMethod(name);
    }
}

在创建类之后的某个时刻,someMethod方法在另一个类中被称为。它在InitializeComponent和构造函数中的所有内容之后调用。但是,即使在someMethod完成后,选项卡控件仍然没有选项卡。

编辑:为了澄清,Update方法仅在应用程序的生命周期内调用一次。我只想要一个Person实例。

2 个答案:

答案 0 :(得分:3)

public void createGUI(String name){
    Person newPerson = new Person();
    newPerson.someMethod(name);
}

在那里,您正在创建一个新的Person对象,它与正在向您显示的对象完全无关。这个新对象实际上从未在任何地方显示过,所以无论你改变什么,都不会被你看到。

相反,您需要更改实际存在并显示的Person对象。

或者,您也可以使用newPerson.Show()显示新对象,但这会打开一个新窗口而不会更改现有窗口。

答案 1 :(得分:2)

原因很简单,每次更新时都会创建Person类的新实例,因此一个实例中的更改不能反映在另一个实例中。