TextBox控件未更新.Text属性

时间:2017-01-09 00:37:39

标签: c# uwp

有人可以解释这个问题吗?

我在类中创建了一堆控件

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

当我调用数据库来更新主页上的UNAME字段时,它确实可以打印新值。但是,上面显示的位于不同类中的textBox不会更新为新值。

我已经尝试在数据库获取值但没有运气后初始化此文本框。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

在创建页面时实例化并分配uname TextBox。虽然您调用数据库来更新MainPage.UNAME,但您没有更改uname.Text的指针内容。您可以直接设置uname.Text的简单方法,例如uname.Text = MainPage.UNAME

您也可以像后面的代码一样使用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}" />

ViewModel.cs

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));
    }
}

答案 1 :(得分:-1)

我找到了解决方法。

我更改了这一行:

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

然后..我在数据库调用之后调用了init,并且poof它工作了!