如何将数据保存在文本框(WP)中?

时间:2014-07-07 01:05:59

标签: c# wpf xaml wpf-controls

我正在开发一个可以从用户那里获取号码并将消息发送到该号码的APP。

该号码保存在全局变量中,该号码可由用户更改。我希望每次用户打开应用程序时,电话号码都会显示在文本框中,这样他/她就可以查看该号码并在需要时进行更新。

我尝试了什么:

phonenumber.Text = (App.Current as App).phoneglobal;

我在InitializeComponent();之后添加了它,但这不起作用。

1 个答案:

答案 0 :(得分:0)

由于您使用的是WPF,我建议您使用MVVM pattern。在你的情况下,你会有:

public partial class MainWindow : Window
{
    private MainWindowViewModel viewModel = new MainWindowViewModel();

    public MainWindow()
    {
        InitializeComponent();
        DataContext = viewModel;
    }
}

public class MainWindowViewModel : System.ComponentModel.INotifyPropertyChanged
{
    private App currentApp = (Application.Current as App);

    public MainWindowViewModel()
    {
    }

    public string PhoneNumber
    {
        get
        {
            return currentApp.phoneglobal;
        }
        set
        {
            currentApp.phoneglobal = value;
            OnPropertyChanged(new PropertyChangedEventArgs("PhoneNumber"));
        }
    }

    #region INotifyPropertyChanged Members

    public event PropertyChangedEventHandler PropertyChanged;

    #endregion

    private void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, e);
        }
    }
}

然后,在您的xaml中,只需绑定到ViewModel的PhoneNumber属性。

<Window x:Class="YourNamespace.MainWindow">
    <TextBox x:Name="phonenumber" Text="{Binding PhoneNumber}" />
</Window>

然后你永远不需要从代码隐藏中设置phonenumber.Text。如果您需要以编程方式设置电话号码,请设置viewModel.PhoneNumber,文本框将自动更新。

请注意,如果您直接设置currentApp.phoneglobal(不使用viewModel.PhoneNumber),则文本框不会自动更新。

如果这没有帮助,请将您的xaml代码以及代码中的任何引用发布到phonenumber文本框。