我正在开发一个可以从用户那里获取号码并将消息发送到该号码的APP。
该号码保存在全局变量中,该号码可由用户更改。我希望每次用户打开应用程序时,电话号码都会显示在文本框中,这样他/她就可以查看该号码并在需要时进行更新。
我尝试了什么:
phonenumber.Text = (App.Current as App).phoneglobal;
我在InitializeComponent();
之后添加了它,但这不起作用。
答案 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
文本框。