Я пытаюсь принять пользовательский ввод, чтобы позволить пользователю назвать игроков в моей игре. Я читаю документацию по входу, но все, что я нахожу, относится к OnTextChanged, et c. Я хочу, чтобы пользователь мог вводить имя для игрока 1 и имя для игрока 2 и иметь соответствующие поля, установленные для любых строк, которые вводит пользователь, только когда они нажимают кнопку на странице с именем StartGame. Чего мне здесь не хватает?
xml (я знаю, что там, где я добавил запись, отсутствуют очень понятные вещи, но я не совсем понимаю, как с этим справиться)
<ContentPage.Content>
<StackLayout Margin="20">
<!--<Label Text="Player 1 Name" Grid.Row="0" Grid.Column="0" HorizontalTextAlignment="Center" FontSize="Medium"/>-->
<Entry Placeholder="Enter a name for Player 1"/>
<Entry Placeholder="Enter a name for Player 2"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button Grid.Column="0"
Text="Start"/>
</Grid>
</StackLayout>
</ContentPage.Content>
код позади
namespace SampleApp.Views
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class NameEntryPage : ContentPage
{
public NameEntryPage()
{
InitializeComponent();
}
}
}
ViewModel
namespace SampleApp.ViewModels
{
public class NameEntryPageViewModel : INotifyPropertyChanged
{
public INavigation Navigation { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
var changed = PropertyChanged;
if (changed == null)
return;
changed.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public Command StartGameCommand { get; set; }
public NameEntryPageViewModel(INavigation navigation)
{
this.Navigation = navigation;
StartGameCommand = new Command(() => StartGame());
}
private void StartGame()
{
this.Navigation.PushAsync(new Views.TwoPlayerPage());
}
}
}
Модель
namespace SampleApp.Models
{
public class Player
{
public int LifeTotal { get; set; }
public string Name { get; set; }
}
}