Xamarin形成动态的ContentPages

时间:2019-02-06 18:52:55

标签: c# xamarin.forms xamarin.ios xamarin.android

我需要一些建议,以帮助解决任何问题。我必须创建一个具有ContentPages动态计数的视图。我创建了两个ViewModel,一个具有逻辑和秒表,另一个用于控制动态页面。看起来像这样:

CircleViewModel:

public class CircleViewModel: ViewModelBase {
    public ObservableCollection<Circle> Circles { get; set; }

    private string _timeText;

    public string TimeText { 
        get => _timeText; 
        set {
            _timeText = value; 
            OnPropertyChanged();
        }

   // Some ICommands and methods

   public async Task StartStopWatch() { ... }
}

MultiPageViewModel:

public class MultiPageViewModel : ViewModelBase {
    public ObservableCollection<CircleViewModel> Pages { get; set; }

    private CircleViewModel _currentPage;

    public CircleViewModel CurrentPage { 
        get => _currentPage; 
        set {
            _currentPage = value;
            OnPropertyChanged();
        }

    // Some ICommands and methods
}

MultiPageView.xaml:

<ContentPage ...
    BindingContext="{Binding MultiPageViewModel, Source={StaticResource Locator}}">
    <Grid>
        <ListView ItemsSource="{Binding CurrentPage.Circles}"/>
        <Label Text="{Binding CurrentPage.Title}"/>
        <Button Text="{Binding CurrentPage.TimeText}" Command="{Binding CurrentPage.StartWatchCommand}"/>

        <userControls:VerticalTabView ItemsSource="{Binding MultiPageViewModel.Pages, Source={StaticResoruce Locator}}"
    MoreButtonCommand="{Binding MultiPageViewModel.MoreButtonCommand, Source={StaticResource Locator}}"/>
    </Grid>
</ContentPage>

VerticalTabView是用于更改当前页面的用户控件。

我不喜欢这种可用性,因此我将ContentPage更改为CarouselPage。使用UWP可以正常工作,而使用Android则滚动开始变得混乱,在Visual Studio的输出中出现“ 应用程序可能在其主线程上做过多的工作。”并因OutOfMemory异常而崩溃。 CarouselPage当前不适用于iOS。

我该如何改善?我很感谢任何建议。谢谢。

0 个答案:

没有答案