C# TextBox控件未更新。Text属性

C# TextBox控件未更新。Text属性,c#,uwp,C#,Uwp,有人能解释这个问题吗 我在一个类中创建了一组控件 public static TextBox uname = new TextBox { PlaceholderText = "Username", Margin = new Thickness(0, 5, 0, 0), Text = MainPage.UNAME }; 当我调用数据库更新主页上的UNAME字段时,它会更新,我可以打印新值。但是,上面显示的位于不同类中的文本框不会更新为新值 我尝试在数据库获取值后初始化此文本框,但没有成功 非常感

有人能解释这个问题吗

我在一个类中创建了一组控件

public static TextBox uname = new TextBox { PlaceholderText = "Username", Margin = new Thickness(0, 5, 0, 0), Text = MainPage.UNAME };
当我调用数据库更新主页上的UNAME字段时,它会更新,我可以打印新值。但是,上面显示的位于不同类中的文本框不会更新为新值

我尝试在数据库获取值后初始化此文本框,但没有成功


非常感谢您的帮助。

我找到了解决办法

我改变了这一行:

public static TextBox uname = new TextBox { PlaceholderText = "Username", Margin = new Thickness(0, 5, 0, 0), Text = MainPage.UNAME };
为此:

public static TextBox uname = new TextBox { PlaceholderText = "Username", Margin = new Thickness(0, 5, 0, 0) };
然后将我的所有文本分配放在初始化方法中

例如,uname.Text=MainPage.uname


然后。。在DB调用之后,我调用了init,结果它成功了

创建页面时,将实例化并分配uname文本框。虽然您调用数据库来更新
MainPage.UNAME
,但是您没有更改
UNAME.Text
的指针内容。您可以像
uname.Text=MainPage.uname
那样直接设置
uname.Text

您还可以像代码隐藏一样使用xaml数据绑定

MainPage.xaml.cs

 public ViewModel viewModel { get; set; }      
 public MainPage()
 {          
     this.InitializeComponent();
     this.viewModel = this.DataContext as ViewModel;

 }

 private void MyButton_Click(object sender, RoutedEventArgs e)
 {   
     viewModel.Uname = MainPage.UNAME;
 }
MainPage.xaml

<TextBox
    Margin="0,0,5,0"
    PlaceholderText="User Name"
    Text="{Binding Path=Uname}" />

拥有
静态
控件实例是个坏主意-如果您想显示UI的多个实例怎么办?您的字段也是
公共
,而不是
只读
。考虑把它转换成一个自动属性。谢谢提示:没有为此使用xaml。框是用代码创建的。
public event PropertyChangedEventHandler PropertyChanged;
private string uname;
public string Uname
{
    get
    {
        return uname;
    }

    set
    {
        uname = value;
        OnPropertyChanged();
    }
}

public void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
    PropertyChangedEventHandler eventHandler = this.PropertyChanged;
    if (eventHandler != null)
    {
        eventHandler(this, new PropertyChangedEventArgs(propertyName));
    }
}