2017-04-03 1 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

MainPage 생성자에서 datacontext를 ViewModel로 설정해보십시오. 완전한 코드 예제에있는 경우 뭔가 등 ...

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

빙고, 정확히 무엇이 놓치고 있었는지 .. :) 정말 고마워. –

관련 문제