2017-04-03 13 views
-2

MVVM環境でBindingを使用してTextBoxの内容を更新しようとしています。ボタンがフォーカスを受け取ると、値が渡され、その値がTextBoxに反映されます。私は最初の部分を持っているようですが、値を渡す際に苦労しているようです。 私はMVVMに関する質問を以前に(自分自身を含めて)聞いてきましたが、何らかの理由でそれを得ることができません。UWP MVVM TextBoxにバインドして値を返す

だから、私はモデルで始まる:

public class iText : INotifyPropertyChanged 

{ 
    public event PropertyChangedEventHandler PropertyChanged; 
    private string _text; 
    public string Text 
    { 
     get { return _text; } 
     set 
     { 
      _text = value; 
      PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Text))); 
     } 
    } 

私はその後、私のViewModelにに進みます

private iText _helper = new iText(); 
public iText Helper 
{ 
    get { return _helper; } 
    set 
    { 
     _helper = value; 
    } 
} 

XAMLページ:

<Page.Resources> 
    <scan:ModelDataContext x:Key="ModelDataContext" x:Name="ModelDataContext"/> 
</Page.Resources> 

<TextBox Text="{Binding Helper.Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 

私は、誰かが私が間違って何をすべきかを教え、そしてどこができれば、私は本当に感謝できMainPage.cs

public sealed partial class MainPage : Page 
{ 
    public MainPageViewModel iText { get; set; } 

    public MainPage() 
    { 
     InitializeComponent(); 
     iText = new MainPageViewModel(); 
    } 

    private void btn_GotFocus(object sender, RoutedEventArgs e) 
    { 
     var str = "test" 
     iText.Helper.Text = str; 
    } 

からのテキストを更新してみてください。事前にありがとうございます。

+0

あなたが投稿コード、にもかかわらず命名奇妙な識別子は、正常に動作します。だからあなたの問題が何であれ、それはあなたが見せてくれるコードにあります。問題を確実に再現する良い[mcve]が含まれるように質問を修正してください。 –

答えて

1

メインページのコンストラクタで、datacontextをViewModelに設定してみてください。完全なコード例で見つかった場合 のような何か...

public MainPage() 
{ 
    InitializeComponent(); 
    iText = new MainPageViewModel(); 
    this.dataContext = iText; 
} 
+0

ビンゴ、それはまさに何が行方不明だったのですか:)ありがとう。 –

関連する問題