Xamarin 设置 EntryCell 的绑定

Xamarin Set Binding of EntryCell

我想使用 MVVM 保存用户在 EntryCell 的占位符中输入的值。

这是我的一部分。xaml

<TableView>
    <TableView.Root>
      <TableSection>
          <EntryCell x:Name="HomeEC"
             Label="HomeTeam"             
             Placeholder="{Binding Home, Mode=TwoWay}"
          >                
          </EntryCell>

          <EntryCell x:Name="AwayEC"
            Label="AwayTeam"            
            Placeholder="{Binding Away, Mode=TwoWay}"
          >           
          </EntryCell>

          <EntryCell x:Name="BetEC"
            Label="BetTeam" 
            Placeholder="{Binding Bet, Mode=TwoWay}"
          >
          </EntryCell>

          <EntryCell x:Name="TypeEC"
            Label="BetType" 
            Placeholder="{Binding Type, Mode=TwoWay}"
          >
        </EntryCell>

          <EntryCell x:Name="OddEC"
            Label="Odd" 
            Placeholder="{Binding Odd, Mode=TwoWay}"
          >
          </EntryCell>

       </TableSection>    
    </TableView.Root>  
  </TableView>

这是我的 ViewModel class

public string Home
        {
            set
            {
                home = value;
                OnPropertyChanged("Home");
                newMatch.HomeTeam = home;
            }
        }


        public string Away
        {
            set
            {
                away = value;
                OnPropertyChanged("Away");
                newMatch.AwayTeam = away;
            }
        }

        public string Bet
        {
            set
            {
                bet = value;
                OnPropertyChanged("Bet");
                newMatch.Bet = bet;
            }
        }

        public string Type
        {
            set
            {
                type = value;
                OnPropertyChanged("Type");
                newMatch.BetType = type;
            }
        }

        public string Odd
        {
            set
            {
                odd = value;
                OnPropertyChanged("Odd");
                newMatch.Odd = Decimal.Parse(odd);
            }
        }



        public ICommand InsertBet;

        protected virtual void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this,
                    new PropertyChangedEventArgs(propertyName));
            }
        }

当我在 UI 的字段中输入我的值时,它们不会保存在 VM 中。我做错了什么?

谢谢, 德拉戈斯

InsertMatchVM.cs

public class InsertMatchVM : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string home, away, bet;
    public Match newMatch = new Match();
    public string Home
    {
        set
        {
            home = value;
            OnPropertyChanged("Home");
            newMatch.HomeTeam = home;
        }
        get
        {
            return home;
        }
    }


    public string Away
    {
        set
        {
            away = value;
            OnPropertyChanged("Away");
            newMatch.AwayTeam = away;
        }
        get
        {
            return away;
        }
    }

    public string Bet
    {
        set
        {
            bet = value;
            OnPropertyChanged("Bet");
            newMatch.Bet = bet;
        }
        get
        {
            return bet;
        }
    }       




    public ICommand InsertBet;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this,
                new PropertyChangedEventArgs(propertyName));
        }
    }
}

Page1.Xaml

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
      xmlns:local="clr-namespace:App2;assembly=App2"
      x:Class="App2.Page1">
<ContentPage.BindingContext>
     <local:InsertMatchVM/>
</ContentPage.BindingContext>

<TableView>
  <TableView.Root>
   <TableSection>
    <EntryCell x:Name="HomeEC"
       Label="HomeTeam"
       Text="{Binding Home, Mode=TwoWay}"
        Placeholder="Home"
      >
    </EntryCell>

    <EntryCell x:Name="AwayEC"
      Label="AwayTeam"
      Text="{Binding Away, Mode=TwoWay}"
               Placeholder="Away"
      >
    </EntryCell>

    <EntryCell x:Name="BetEC"
      Label="BetTeam"
      Text="{Binding Bet, Mode=TwoWay}"
               Placeholder="Bet"
      >
    </EntryCell>
   </TableSection>
  </TableView.Root>
 </TableView>

</ContentPage>

App.cs

public class App : Application
{
    public App()
    {
        MainPage = new Page1();
    }
}

Match.cs

public class Match
{
    public string HomeTeam { get; set; }
    public string AwayTeam { get; set; }
    public string Bet { get; set; }
}