Пример #1
0
        static public async Task <Player> GetPlayerModal(INavigation navigation)
        {
            var page = new NewPlayerPage();
            await navigation.PushModalAsync(page);

            var player = await page._tcs.Task;
            await navigation.PopModalAsync();

            return(player);
        }
Пример #2
0
        public ChoosePlayerPage(List <Team> knownTeams, IList <Player> knownPlayers)
        {
            knownTeams   = knownTeams ?? new List <Team>();
            knownPlayers = knownPlayers ?? new List <Player>();

            var content = new StackLayout
            {
                VerticalOptions = LayoutOptions.FillAndExpand,
                Children        = { }
            };

            var newPlayerButton = new Button
            {
                Text = "New Player",
            };

            newPlayerButton.Clicked += async(s, e) =>
            {
                var player = await NewPlayerPage.GetPlayerModal(this.Navigation);

                // Add to global list of known players
                ApplicationProperties.KnownPlayers.Add(player);
                _tcs.SetResult(player);
            };

            // TODO: support teams
            // TODO: add image to row, color, size, etc
            var playerListView = new ListView {
                ItemsSource = knownPlayers
            };

            playerListView.ItemTemplate = new DataTemplate(typeof(ImageCell));
            playerListView.ItemTemplate.SetBinding(ImageCell.TextProperty, "Name");
            playerListView.ItemTemplate.SetBinding(ImageCell.DetailProperty, "Skill");

            playerListView.ItemSelected += (s, e) =>
            {
                if (e.SelectedItem == null)
                {
                    return;
                }

                var player = (Player)e.SelectedItem;
                _tcs.SetResult(player);
            };

            content.Children.Add(playerListView);
            content.Children.Add(newPlayerButton);

            Content = content;
        }