【问题标题】:How to go another xaml page xamarin.form FlowListView如何去另一个 xaml 页面 xamarin.form FlowListView
【发布时间】:2019-12-19 07:23:43
【问题描述】:

我在 xamarin 表单中创建了 FlowListView.FlowLoadingTemplate。当点击 FlowItemTappedCommand 时转到另一个页面或导航到另一个页面。

FlowListView xaml:

  <StackLayout Padding="10">
    <flv:FlowListView FlowColumnCount="2"  
                      x:Name="FlowListView"
            SeparatorVisibility="Default"   
            HasUnevenRows="True"                  
            FlowTappedBackgroundColor="Red" FlowIsLoadingInfiniteEnabled="True"
            FlowItemTappedCommand="{Binding ItemTappedCommand}"   
            FlowItemsSource="{Binding Items}">

        <flv:FlowListView.FlowLoadingTemplate>
            <DataTemplate>
                <ViewCell>
                    <Label
                    HorizontalTextAlignment="Center"
                    VerticalTextAlignment="Center"
                    TextColor="Black"
                    Text="Loading..."
                ></Label>
                </ViewCell>
            </DataTemplate>
        </flv:FlowListView.FlowLoadingTemplate>
        <flv:FlowListView.FlowColumnTemplate>
            <DataTemplate >
                <Grid Padding="5">
                    <BoxView Color="#121E22" Opacity="0.8" CornerRadius="6" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Grid.Row="0">
                    </BoxView>
                    <StackLayout Padding="5" Grid.Row="0">
                        <ff:CachedImage
                            HeightRequest="70" WidthRequest="70" Aspect="AspectFill" 
                            HorizontalOptions="Center" VerticalOptions="Center"
                            DownsampleWidth="70" DownsampleUseDipUnits="true"
                            Source ="{Binding Icon}" DownsampleToViewSize="True"
                            LoadingPlaceholder="Spinner.png" 
                            ErrorPlaceholder= "ErrorImage"
                            CacheDuration= "50"
                            RetryCount= "3"
                            RetryDelay= "600"
                            >
                        </ff:CachedImage>
                        <Label Text="{Binding Title}" TextColor="White" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" HorizontalTextAlignment="Center"/>
                    </StackLayout>
                </Grid>
            </DataTemplate>
        </flv:FlowListView.FlowColumnTemplate>
    </flv:FlowListView>
</StackLayout>

流列表绑定类/cs文件

 public class ItemPageModel: BindableObject
{
    private ItemsPage itemsPage;
    public ItemPageModel(ItemsPage itemsPage)
    {

        this.itemsPage = itemsPage;
        AddItems();
    }

    private void AddItems()
    {
        Items.Add(new DashboardItemList { Title = "Junction List", Icon = "baseline_view_list_white_48.png", Id = ManuItemList.JunctionList });
        Items.Add(new DashboardItemList { Title = "Live Monitoring", Icon = "baseline_visibility_white_48.png" , Id = ManuItemList.LiveMonitoring });
        Items.Add(new DashboardItemList { Title = "Specification", Icon = "baseline_details_white_36.png" , Id = ManuItemList.Specification });
        Items.Add(new DashboardItemList { Title = "Time Setting", Icon = "baseline_settings_applications_white_48.png", Id = ManuItemList.TimeSetting });
        Items.Add(new DashboardItemList { Title = "Fault Logs", Icon = "baseline_add_alert_white_48.png" , Id = ManuItemList.FaultLogs });
        Items.Add(new DashboardItemList { Title = "Linking Status", Icon = "baseline_link_white_48.png" , Id = ManuItemList.LinkingStatus });
        Items.Add(new DashboardItemList { Title = "Linking Status", Icon = "https://farm9.staticflickr.com/8625/15806486058_7005d77438.jpg" });

    }

    private ObservableCollection<DashboardItemList> _items = new ObservableCollection<DashboardItemList>();
    public ObservableCollection<DashboardItemList> Items
    {
        get
        {
            return _items;
        }
        set
        {
            if (_items != value)
            {
                _items = value;
                OnPropertyChanged(nameof(Items));
            }
        }
    }

    public Command ItemTappedCommand
    {
        get
        {
            return new Command(async (sender) =>
            {
                var Item = sender as DashboardItemList;

                await Navigation.PushAsync(new JunctionList());


            });
        }
    }
}

}

我尝试了很多方法去另一个,但我得到了异常或应用程序崩溃

这是我点击标签后进入的另一个页面

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:d="http://xamarin.com/schemas/2014/forms/design"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         mc:Ignorable="d"
         x:Class="MITSAPP.Views.JunctionList">
<ContentPage.Content>

    <StackLayout>
        <Label Text="Welcome to Xamarin.Forms!"
            VerticalOptions="CenterAndExpand" 
            HorizontalOptions="CenterAndExpand" />
    </StackLayout>
</ContentPage.Content>

【问题讨论】:

    标签: xaml xamarin.forms xamarin.android navigation


    【解决方案1】:

    您需要在您的 App.xaml.cs 中使用导航页面设置 MainPage。

    MainPage = new NavigationPage(new ItemPage());
    

    【讨论】:

    • 我已经在 App.xaml.cs 中尝试过。就像那样 MainPage = new NavigationPage(new MainPage());在其他页面中我使用 await Navigation.PushAsync(new JunctionList());但我仍然遇到异常(对象引用未设置为对象的实例)
    • 您不是从 MainPage.xaml.cs 导航吗?
    • 不,我从 MasterDetailPage 导航,在 masterDetailPage 中有一个视图 "ItemsPage" 。所以我从 ItemsPage 导航到其他内容页面。
    【解决方案2】:

    您还必须使用 NavigationPage 添加详细信息页面,如下所示,

      <MasterDetailPage.Detail>
        <NavigationPage>
          <x:Arguments>
            <pages:YourDetailPage />
          </x:Arguments>
        </NavigationPage>
      </MasterDetailPage.Detail>
    

    然后您可以从详细信息页面导航到任何页面。

    【讨论】:

    • 在母版页中已经有 itempage item page display tab to go other page跨度>
    【解决方案3】:

    我在我这边试试你的代码,但是当我点击 FlowListView 项时我可以导航到另一个页面,我没有问题,这是我的示例,你可以下载测试。

    https://github.com/CherryBu/Sample1

    我看到你说你是从MasterDetailedPage导航的,如果你还有问题,你可以把你的样本上传到github,我会下载你的样本进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-19
      • 2016-12-31
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      相关资源
      最近更新 更多