2017-01-09 16 views
0

誰もこの問題を解明できますか?TextBoxコントロールが.Textプロパティを更新していません

私はメインページでunameフィールドを更新するためにデータベースを呼び出すと、それがないと私は、新しい値を印刷することができ、クラスで

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

を作成するコントロールの束を持っています。ただし、上に示されている異なるクラスにあるtextBoxは、新しい値に更新されません。

データベースが値を取得した後にこのテキストボックスを初期化しようとしましたが、運がありません。

何か助けていただければ幸いです。

+0

は悪い考えです - あなたは何をしたい場合あなたのUIの複数のインスタンスを表示するには? – Dai

+0

あなたのフィールドは 'public'ですが' readonly'はありません。それを自動プロパティに変換することを検討してください。 – Dai

+0

ヒントありがとう:) – Brizzler

答えて

-1

私はそれを回避する方法を考え出しました。

私は、この行に変更:次に、初期化メソッドにすべての私のテキストの割り当てを入れ

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

:これに

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

を。

ex。 、uname.Text = MainPage.UNAME

私はDB呼び出しの後にinitを呼び出し、それがうまくいった!

0

uname TextBoxは、ページの作成時にインスタンス化され、割り当てられます。 MainPage.UNAMEを更新するためにデータベースを呼び出すが、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 `static`コントロールのインスタンスを持つ

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

関連する問題