2017-09-07 71 views
0

看起來像我不能理解xamarin.forms應用程序中多麼可怕的mvvm模式。我想製作一個簡單的Hello World應用程序,以及我如何做到這一點。簡單Mvvm數據綁定 - xamarin形式

視圖模型

namespace HelloWorldApp.ViewModels 
{ 
    public class MainViewModel : INotifyPropertyChanged 
    { 
     private string _hello; 

     private string hello 
     { 
      get { return _hello; } 
      set 
      { 
       _hello = value; 
       OnPropertyChanged(); 
      } 
     } 

     public MainViewModel() { 
      hello = "Hello world"; 
     } 

     public event PropertyChangedEventHandler PropertyChanged; 

     protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
     { 
      PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 

查看

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="SkanerDetali.Views.LoginPage" 
      xmlns:ViewModels="clr-namespace:HelloWorldApp.ViewModels;assembly=HelloWorldApp"> 

    <ContentPage.BindingContext> 
     <ViewModels:MainViewModel /> 
    </ContentPage.BindingContext> 

    <StackLayout> 
     <Label Text="{Binding hello}" /> 
    </StackLayout> 
</ContentPage> 

我無法弄清楚我失去了什麼。任何幫助將是非常讚賞

+0

不直接關係到你的問題,但在C#約定是使用大寫字母爲屬性的名字......'公共字符串Hello {...}' – Damian

+0

@Damian是的。 –

回答

3

hello屬性需要公開。

public class MainViewModel : INotifyPropertyChanged 
{ 
    private string _hello; 

    public string hello 
    { 
     get { return _hello; } 
     set 
     { 
      _hello = value; 
      OnPropertyChanged(); 
     } 
    } 
    ... 
} 
+0

謝謝泰特的..我是轉儲...失去了一段時間。 –