设置我的局部视图,无法使用xamarin

问题描述 投票:0回答:1

现在,我开始使用用于xamarine的Prism Framework,但是在实现跨视图的连接时遇到了一些问题。

我有此文件夹“ Views”,并且在其中有另一个名为PartialViews的文件夹。现在在PartialViews中,我有一个名为“ Header.xaml”的contentPage。现在,我想将此文件访问到位于Views文件夹中的Index.xaml视图。我也想将“ Header.xaml”连接到其他视图,例如,我想将其连接到“ Orders.xaml”视图。

我的Header.xaml文件如下:

        <?xml version="1.0" encoding="utf-8" ?>
        <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                     xmlns:prism="http://prismlibrary.com"
                     xmlns:local="clr-namespace:PROJECTX.Views"
                     prism:ViewModelLocator.AutowireViewModel="True"
                     x:Class="PROJECTX.Views.Header">

            <StackLayout>
                <Label Text="Trying partial views" />
            </StackLayout>

        </ContentPage>

而我的Index.xaml如下:

        <?xml version="1.0" encoding="utf-8" ?>
        <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
        xmlns:combobox="clr-namespace:Syncfusion.XForms.ComboBox;assembly=Syncfusion.SfComboBox.XForms"
        xmlns:ListCollection="clr-namespace:System.Collections.Generic;assembly=mscorlib"
                     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                     xmlns:prism="http://prismlibrary.com"
                     xmlns:local="clr-namespace:PROJECTX.Views"
                     prism:ViewModelLocator.AutowireViewModel="True"
                     x:Class="PROJECTX.Views.Index">


            <ScrollView>
                <local:Header mvvm:ViewModelLocator.AutowirePartialView="{x:Reference Header}" />

                <combobox:SfComboBox x:Name="comboBox">
                    <combobox:SfComboBox.ComboBoxSource>
                        <ListCollection:List x:TypeArguments="x:String">
                            <x:String>Rendit sipas: Me te kerkuara</x:String>
                            <x:String>Rendit sipas: Te fundit</x:String>
                            <x:String>Rendit sipas: Alfabetit</x:String>
                        </ListCollection:List>
                    </combobox:SfComboBox.ComboBoxSource>
                </combobox:SfComboBox>


            </ScrollView>

        </ContentPage>

我还在App.xaml.cs上将PartialViews文件夹的路由注册为这样的视图模型:

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
          {
              containerRegistry.RegisterForNavigation<NavigationPage>();
              containerRegistry.RegisterForNavigation<MainPage, MainPageViewModel>();
              containerRegistry.RegisterForNavigation<Index, IndexViewModel>();
              //containerRegistry.RegisterForNavigation<Header, HeaderViewModel>();
              ViewModelLocationProvider.Register<Header, HeaderViewModel>();
          }

现在我遇到了一些错误...

1. The property 'Content' is set more than once. 
2. The attachable property 'AutowirePartialView' was not found in type 'ViewModelLocator'.
3. Property 'Content' does not support values of type 'Header'.

现在我知道这可能是一个菜鸟问题,但我似乎无法使它用于处理部分视图问题。我对xamarin中的部分视图的理解正确吗?我应该从视图中调用局部视图。对吗?

任何帮助,我都会非常感激。

c# xaml xamarin xamarin.forms prism
1个回答
0
投票

因此,您必须了解,在Xamarin表单中,一个页面只能有一个ContentPage对象,因此会出现错误“内容设置不止一次”。但是,您可以在一个页面中包含多个布局这是一个简短的片段,说明页面与布局https://youtu.be/-2TZpsUJEjk?t=480

由于您要使用PartialViews,因此引用它们的常用方法是使用模板。因此,您将拥有一个共享的HeaderTemplate文件。但是,您可以使用ContentView对象(它是layout类型)来代替ContentPage对象,并在其中定义内容。 (https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/layouts/contentview

© www.soinside.com 2019 - 2024. All rights reserved.