private async void DeleteButton_OnClickedButton_OnClicked(object sender, EventArgs e)
        {
            var    ci             = CrossMultilingual.Current.CurrentCultureInfo;
            string confirmTitle   = resmgr.Value.GetString("DeleteLocation", ci);
            string confirmMessage = resmgr.Value.GetString("DeleteLocationMessage", ci) + " ? ";
            string yes            = resmgr.Value.GetString("Yes", ci);
            string no             = resmgr.Value.GetString("No", ci);
            bool   confirmDelete  = await DisplayAlert(confirmTitle, confirmMessage, yes, no);

            if (confirmDelete)
            {
                _viewModel.IsBusy   = true;
                _viewModel.EditMode = false;
                Models.KinaUna.Location deletedLocation = await ProgenyService.DeleteLocation(_viewModel.CurrentLocation);

                if (deletedLocation.LocationId == 0)
                {
                    _viewModel.EditMode = false;
                    // Todo: Show success message
                }
                else
                {
                    _viewModel.EditMode = true;
                    // Todo: Show failed message
                }
                _viewModel.IsBusy = false;
            }
        }
        private async void EditButton_OnClicked(object sender, EventArgs e)
        {
            if (_viewModel.EditMode)
            {
                _viewModel.EditMode = false;
                _viewModel.IsBusy   = true;
                _viewModel.IsSaving = true;

                DateTime locDate = new DateTime(_viewModel.DateYear, _viewModel.DateMonth, _viewModel.DateDay, _viewModel.DateHours, _viewModel.DateMinutes, 0);
                _viewModel.CurrentLocation.Date        = locDate;
                _viewModel.CurrentLocation.Name        = _viewModel.Name;
                _viewModel.CurrentLocation.StreetName  = _viewModel.Street;
                _viewModel.CurrentLocation.HouseNumber = _viewModel.HouseNumber;
                _viewModel.CurrentLocation.District    = _viewModel.District;
                _viewModel.CurrentLocation.City        = _viewModel.City;
                _viewModel.CurrentLocation.PostalCode  = _viewModel.PostalCode;
                _viewModel.CurrentLocation.County      = _viewModel.County;
                _viewModel.CurrentLocation.State       = _viewModel.State;
                _viewModel.CurrentLocation.Country     = _viewModel.Country;
                bool latitudeParsed = double.TryParse(_viewModel.Latitude.Replace(',', '.'), NumberStyles.Any, CultureInfo.InvariantCulture, out double latitude);
                if (latitudeParsed)
                {
                    _viewModel.CurrentLocation.Latitude = latitude;
                }

                bool longitudeParsed = double.TryParse(_viewModel.Longitude.Replace(',', '.'), NumberStyles.Any, CultureInfo.InvariantCulture, out double longitude);
                if (longitudeParsed)
                {
                    _viewModel.CurrentLocation.Longitude = longitude;
                }

                _viewModel.CurrentLocation.Notes       = _viewModel.Notes;
                _viewModel.CurrentLocation.Tags        = TagsEntry.Text;
                _viewModel.CurrentLocation.AccessLevel = _viewModel.AccessLevel;

                // Save changes.
                Models.KinaUna.Location resultLocation = await ProgenyService.UpdateLocation(_viewModel.CurrentLocation);

                _viewModel.IsBusy   = false;
                _viewModel.IsSaving = false;

                EditButton.Text = IconFont.CalendarEdit;
                if (resultLocation != null)                                 // Todo: Error message if update fails.
                {
                    MessageLabel.Text            = "Location Item Updated"; // Todo: Translate
                    MessageLabel.BackgroundColor = Color.DarkGreen;
                    MessageLabel.IsVisible       = true;
                    await Reload();
                }
            }
            else
            {
                EditButton.Text = IconFont.ContentSave;

                _viewModel.EditMode            = true;
                _viewModel.TagsAutoSuggestList = await ProgenyService.GetTagsAutoSuggestList(_viewModel.CurrentLocation.ProgenyId, 0);
            }
        }
        public LocationDetailPage(Models.KinaUna.Location locationItem)
        {
            _viewModel = new LocationDetailViewModel();
            InitializeComponent();
            _viewModel.CurrentLocationId = locationItem.LocationId;
            _viewModel.AccessLevel       = locationItem.AccessLevel;
            _viewModel.City        = locationItem.City;
            _viewModel.Country     = locationItem.Country;
            _viewModel.County      = locationItem.County;
            _viewModel.District    = locationItem.District;
            _viewModel.HouseNumber = locationItem.HouseNumber;
            _viewModel.Latitude    = locationItem.Latitude.ToString(CultureInfo.InvariantCulture);
            _viewModel.Longitude   = locationItem.Longitude.ToString(CultureInfo.InvariantCulture);
            _viewModel.Name        = locationItem.Name;
            _viewModel.Notes       = locationItem.Notes;
            _viewModel.PostalCode  = locationItem.PostalCode;
            _viewModel.State       = locationItem.State;
            _viewModel.Street      = locationItem.StreetName;
            _viewModel.Tags        = locationItem.Tags;

            BindingContext = _viewModel;
        }