2017-01-09 78 views
0

任何人都可以解釋這個問題?TextBox控件不更新.Text屬性

我有一大堆的一類

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

創建控件當我調用數據庫更新的炫魅的uname領域,它和我可以打印新的價值。但是,上面顯示的位於不同類中的textBox不會更新爲新值。

我試過在數據庫獲取值但沒有運氣後初始化這個文本框。

任何幫助表示讚賞。

+0

有'static'控件實例是一個壞主意 - 如果你想要什麼顯示你的用戶界面的多個實例? – Dai

+0

此外,您的字段是「公開」,但不是「只讀」。考慮將其轉換爲自動屬性。 – Dai

+0

感謝您的提示:) – Brizzler

回答

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

然後把我所有的文字分配在初始化方法。

ex。 ,uname.Text = MainPage.UNAME

然後..我調用了數據庫調用後的init,並使其工作!

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

downvote ...不使用xaml。框在代碼中創建。 – Brizzler

相關問題