2017-04-03 74 views
-2

我想在MVVM環境中使用綁定獲取更新文本框的內容。當Button獲得焦點時,它傳遞一個值,並且該值應該反映在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

賓果,那正是缺少的...... :)非常感謝。 –