Xamarin переключается между страницами без загрузки новой - PullRequest
0 голосов
/ 12 октября 2018

Как переключаться между страницами без загрузки новой страницы в Xamarin, чтобы при внесении изменений на страницу и повторной загрузке в том же сеансе я мог видеть внесенные изменения, но когда я закрываюприложение и открыть его снова изменения не прошло?

**enter image description here**

Как видите, когда я перехожу на страницу "Doel sport" и возвращаюсь на страницу "Doel gewicht", радиоКнопка все еще выбрана.Но когда я затем возвращаюсь на страницу «Doel sport», переключатель больше не выбирается (а страница загружается два раза, я не знаю, почему?)

Страница «Doel gwicht» xaml:

<controls:AnimationPage
        xmlns:controls="clr-namespace:FormsControls.Base;assembly=FormsControls.Base" xmlns="http://xamarin.com/schemas/2014/forms"
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
        x:Class="TimeToSport.Views.GegevensGewichtDoel"
        xmlns:syncfusion="clr-namespace:Syncfusion.XForms.Buttons;assembly=Syncfusion.Buttons.XForms"
        Title="Doel gewicht">


<ContentPage.ToolbarItems>
    <ToolbarItem Text="Volgende" Clicked="Volgende_clicked">
        <ToolbarItem.Icon>
            <OnPlatform x:TypeArguments="FileImageSource">
                <On Platform="UWP" Value="volgende.png"/>
            </OnPlatform>
        </ToolbarItem.Icon>
    </ToolbarItem>
</ContentPage.ToolbarItems>

<ContentPage.Content>

    <StackLayout Orientation="Horizontal"  
                 HorizontalOptions="FillAndExpand"  
                 VerticalOptions="FillAndExpand"  
                 Padding="10,30,0,0"  
                 Spacing="10">


        <syncfusion:SfRadioGroup x:Name="radioGroup">

            <Label Text="Wat is je doel m.b.t. gewicht?"  TextColor="Black" FontSize="17"/>
            <syncfusion:SfRadioButton x:Name="btn_Afvallen" Text="Afvallen" TextColor="Gray" StateChanged="RadioButton_StateChanged"/>
            <syncfusion:SfRadioButton x:Name="btn_OpGewichtBlijven" TextColor="Gray" Text="Op gewicht blijven" StateChanged="RadioButton_StateChanged"/>
            <syncfusion:SfRadioButton x:Name="btn_Aankomen" TextColor="Gray" Text="Aankomen" StateChanged="RadioButton_StateChanged"/>
        </syncfusion:SfRadioGroup>    
         </StackLayout>
     </ContentPage.Content>
 </controls:AnimationPage>

Страница "Doel Gwicht" cs:

        void CreateRadioButtons()
    {
        SfRadioGroup radioGroup = new SfRadioGroup();
        SfRadioButton btn_Afvallen = new SfRadioButton();
        btn_Afvallen.IsChecked = false;
        btn_Afvallen.Text = "Afvallen";
        btn_Afvallen.StateChanged += RadioButton_StateChanged;
        SfRadioButton btn_OpGewichtBlijven = new SfRadioButton();
        btn_OpGewichtBlijven.Text = "Op gewicht blijven";
        btn_OpGewichtBlijven.StateChanged += RadioButton_StateChanged;
        SfRadioButton btn_Aankomen = new SfRadioButton();
        btn_Aankomen.Text = "Aankomen";
        btn_Aankomen.StateChanged += RadioButton_StateChanged;
        radioGroup.Children.Add(btn_Afvallen);
        radioGroup.Children.Add(btn_OpGewichtBlijven);
        radioGroup.Children.Add(btn_Aankomen);
    }

    private void RadioButton_StateChanged(object sender, StateChangedEventArgs e)
    {
        Navigation.PushAsync(new GegevensSportDoel());
    }

    void Volgende_clicked(object sender, EventArgs e)
    {
        Navigation.PushAsync(new GegevensSportDoel());
    }

Страница "Doel Sport" xaml:

<controls:AnimationPage.PageAnimation>
    <controls:PushPageAnimation Duration="Medium" Subtype="FromRight" />
</controls:AnimationPage.PageAnimation>

<ContentPage.ToolbarItems>
    <ToolbarItem Text="Klaar" Clicked="Klaar_clicked">
        <ToolbarItem.Icon>
            <OnPlatform x:TypeArguments="FileImageSource">
                <On Platform="UWP" Value="volgende.png"/>
            </OnPlatform>
        </ToolbarItem.Icon>
    </ToolbarItem>
</ContentPage.ToolbarItems>

<ContentPage.Content>

    <StackLayout Orientation="Horizontal"  
                 HorizontalOptions="FillAndExpand"  
                 VerticalOptions="FillAndExpand"  
                 Padding="10,30,0,0"  
                 Spacing="10">


        <syncfusion:SfRadioGroup x:Name="radioGroup">

            <Label Text="Wat is je doel m.b.t. sport?"  TextColor="Black" FontSize="17"/>
            <syncfusion:SfRadioButton x:Name="btn_SterkerWorden" Text="Afvallen" TextColor="Gray" />
            <syncfusion:SfRadioButton x:Name="btn_ConditieOpbouwen" TextColor="Gray" Text="Op gewicht blijven" />
            <syncfusion:SfRadioButton x:Name="btn_GeenVanBeide" TextColor="Gray" Text="Aankomen"/>
        </syncfusion:SfRadioGroup>


         </StackLayout>
     </ContentPage.Content>
 </controls:AnimationPage>

Страница "Doel Sport" cs:

    void CreateRadioButtons()
    {
        SfRadioGroup radioGroup = new SfRadioGroup();
        SfRadioButton btn_Afvallen = new SfRadioButton();
        btn_Afvallen.IsChecked = false;
        btn_Afvallen.Text = "Afvallen";
        SfRadioButton btn_OpGewichtBlijven = new SfRadioButton();
        btn_OpGewichtBlijven.Text = "Op gewicht blijven";
        SfRadioButton btn_Aankomen = new SfRadioButton();
        btn_Aankomen.Text = "Aankomen";
        radioGroup.Children.Add(btn_Afvallen);
        radioGroup.Children.Add(btn_OpGewichtBlijven);
        radioGroup.Children.Add(btn_Aankomen);
    }

    void Klaar_clicked(object sender, EventArgs e)
    {
        App.Current.MainPage = new NavigationPage(new ItemsPage());
    }

1 Ответ

0 голосов
/ 12 октября 2018

вам просто нужно поддерживать ссылку на новый объект Page вместо того, чтобы каждый раз создавать новый

ItemsPage newPage = null;

void Klaar_clicked(object sender, EventArgs e)
{
    if (newPage == null) {
      newPage = new ItemsPage()
    }

    App.Current.MainPage = new NavigationPage(newPage);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...