【问题标题】:How to change TabbedPage icon and title and page with selected , Switch between two pages如何更改 TabbedPage 图标和标题以及选中的页面,在两个页面之间切换
【发布时间】:2021-02-09 02:37:37
【问题描述】:

我想在选择后更改标签图标和页面,我有 2 个页面但我想用 1 个标签更改并在选择后更改图标和页面,我该怎么做?

        public MainPage()
    {
        InitializeComponent();

        var login = new NavigationPage(new login())
        {
            Title = "login",
            Icon = "login.png"
        };
        var register = new NavigationPage(new register())
        {
            Title = "register",
            Icon = "register.png"
        };

        if(CurrentPage is register)
        {
            Children.Add(login);
        }
        else
        {
            Children.Add(register);
        }


        this.CurrentPageChanged += (object sender, EventArgs e) =>
        {

            var i = this.Children.IndexOf(this.CurrentPage);

            if (i == 0)
            {
                login.Title = "login";
                login.Icon = "login.png";
            }
            else
            {
                register.Title = "register";
                register.Icon = "register.png";
            }
        };

【问题讨论】:

    标签: xamarin.forms c#-4.0 cross-platform tabbedpage current-page


    【解决方案1】:

    您可以创建两个布局并使用按钮在两个布局之间切换:

    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
    
            Content = firstlayout();
        }
    
        public StackLayout firstlayout() {
    
            StackLayout stacklayout = new StackLayout
            {
                Margin = new Thickness(20),
                Children =
                {
                    new Label { Text = "Primary colors" },
                    new BoxView { Color = Color.Red },
                    new BoxView { Color = Color.Yellow },
                    new BoxView { Color = Color.Blue },
                }
            };
    
            Button button = new Button
            {
                Text = "Click to change content2",
                VerticalOptions = LayoutOptions.EndAndExpand,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                HeightRequest = 60,
                BackgroundColor = Color.Green,
                TextColor = Color.White
            };
            button.Clicked +=  (sender, args) => this.Content = secondlayout();
            
            stacklayout.Children.Add(button);
    
            return stacklayout;
        }
    
        public StackLayout secondlayout()
        {
    
            StackLayout stacklayout = new StackLayout
            {
                Margin = new Thickness(20),
                Children =
                {
                    new Label { Text = "Secondary colors" },
                    new BoxView { Color = Color.Green },
                    new BoxView { Color = Color.Orange },
                    new BoxView { Color = Color.Purple }
                }
            };
    
            Button button = new Button
            {
                Text = "Click to change content1",
                VerticalOptions = LayoutOptions.EndAndExpand,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                HeightRequest = 60,
                BackgroundColor= Color.Green,
                TextColor = Color.White             
            };
            button.Clicked += (sender, args) => this.Content = firstlayout();
    
            stacklayout.Children.Add(button);
    
            return stacklayout;
        }
    
    }
    

    结果:

    或者您可以将 Application.Current.MainPage 更改为不同的页面:

    private void Button_Clicked(object sender, EventArgs e)
    {
        Application.Current.MainPage = new MainPage();
    
        //Or
    
        Application.Current.MainPage = new LoginPage();
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 2021-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多