Xamrin формы Зарядите страницу перед переходом на нее - PullRequest
0 голосов
/ 29 марта 2020

Я изучаю формы Xamaring, я хочу сделать 4 страницы содержания. Один из них будет отображать мои списки изображений.

Я хотел бы знать, есть ли способ пополнить список моих задач, прежде чем перейти на последнюю страницу любой из моих 3 страниц.

Знание что я просматриваю такие страницы:

var page = new LastPage();
MainView.Content = page.Content;

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 30 марта 2020

Хотите ли вы добиться результата, подобного следующему GIF?

enter image description here

Если это так, вам нужно достичь его с помощью MVVM и INotifyPropertyChanged

Прежде всего, вы должны создать модель для достижения INotifyPropertyChanged.

  public  class MyModel: INotifyPropertyChanged
    {

        string name;
        public string Name
        {
            set
            {
                if (name != value)
                {
                    name = value;
                    OnPropertyChanged("Image");

                }
            }
            get
            {
                return name;
            }
        }

        string count;
        public string Count
        {
            set
            {
                if (count != value)
                {
                    count = value;
                    OnPropertyChanged("Count");

                }
            }
            get
            {
                return count;
            }
        }



        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }

Затем вам понадобится ViewModel для вывода sh данных.

    public class MyViewModel
    {
        public ObservableCollection<MyModel> myModels { get; set; }
        public MyViewModel() {

            myModels = new ObservableCollection<MyModel>();
            myModels.Add(new MyModel() { Count = "0", Name = "test1" });
            myModels.Add(new MyModel() { Count = "1", Name = "test2" });
            myModels.Add(new MyModel() { Count = "2", Name = "test3" });
        }


    }

На первой и конечной страницах вы должны связать ту же модель представления, которая использует bindingcontext, как в следующем формате кода. MainPage.xaml

  <StackLayout>
        <!-- Place new controls here -->

        <Button Text="Next" Clicked="Button_Clicked"></Button>
        <ListView x:Name="mylistview" ItemsSource="{Binding myModels}" HasUnevenRows="True" >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell >

                        <StackLayout>


                                <Label Text="{Binding Name}"
                               FontAttributes="Bold"
                               FontSize="Large"
                               HorizontalOptions="Center"
                               VerticalOptions="Center" />
                               <Label Text="{Binding Count}"
                                 LineBreakMode="WordWrap"

                                 HorizontalOptions="Center"  />



                        </StackLayout>


                    </ViewCell>
                </DataTemplate>

            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>

MainPage.xaml.cs

   public partial class MainPage : ContentPage
    {
        MyViewModel viewModel;
        public MainPage()
        {
            InitializeComponent();
            viewModel  = new MyViewModel();
            BindingContext = viewModel;
        }

        private void Button_Clicked(object sender, EventArgs e)
        {
            Navigation.PushAsync(new Page1(viewModel));
        }
    }

Вот мое демо, вы можете скачать его.

https://github.com/851265601/XFormsMvvmChange

Вот полезная статья об этом, вы можете обратиться к ней.

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xaml-basics/data-bindings-to-mvvm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...