Xamarin Forms中的默认XAML页面和新XAML页面不相同

时间:2016-10-18 04:08:32

标签: xaml xamarin.forms

我是Xamarin开发的新手。我创建了新的Xamarin XAML App(Xamarin.Forms Portable)。在Portable Project中,默认情况下MainPage.Xaml。要创建MVVM模型,我创建了三个新文件夹 - Views, ViewModels, and Models。现在,我在Views文件夹中添加了新的MainPage.Xaml,并将删除默认的MainPage.Xaml页面。但在这里我看到两个页面都有所不同。默认MainPage.Xamlxmlns:local="clr-namespace:Test"但新MainPage.Xaml没有。同样,新MainPage.Xaml<Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />,但默认值不是 View view = inflater.inflate(R.layout.fragment_hindi, container, false); hindi= (ListView)view.findViewById(R.id.hindiList); ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(),R.layout.textdesign,R.id.textView2,songArray); hindi.setAdapter(adapter); return view; 。截图是: New MainPage.Xaml in Views folder

Default MainPage.Xaml

这些MarkUp是什么意思。为什么会有区别。是否需要改变一些事情。我可以删除默认的MainPage.Xaml,还是应该在View中复制它。我需要将标记从默认页面复制到新页面。如果是这样的话? 提前致谢

2 个答案:

答案 0 :(得分:3)

两个页面都相同,并以相同的方式显示。

第二,还有一个额外的Xml名称空间声明:

xmlns:local="clr-namespace:Test"

这只是一个声明。您可以将其删除,或将其添加到其他页面而不起作用。它的目的是能够引用当前程序集和命名空间(c#namespace,这次)Test中声明的自定义视图,如下所示:

<ContentPage
    ...
    xmlns:local="clr-namespace:Test"
    x:Class="Test.MainPage">
  <local:MyAwesomeView />
</ContentPage>

答案 1 :(得分:0)

很棒,你决定从Xamarin和Xamarin.Forms开始!

虽然我知道你可能有这些问题,但这是一些非常基本的XAML知识。简短的回答是:你不必担心它。

答案很长:

这些页面存在差异的原因仅仅是因为它只是一个模板,而Xamarin为项目创建模板的任何人都可能与为新XAML页面创建模板的人不同。所以他们用不同的方式解决了。或者也许他有一个好/坏的一天,谁知道。

第一页中的Label只是为了向您展示如何开始,因此您不会以空屏幕开始。

额外的命名空间xmlns:local="clr-namespace:Test"在这个新页面中实际上是多余的,但已经存在,所以你可以使用项目中的类。

它实际上相当于班级顶部的using列表。所以每当你需要来自不同命名空间的东西时,你必须在那里声明它。因此,如果您创建“控件”文件夹,则可以添加属性xmlns:controls="clr-namespace:Test.Controls"

请注意我将local更改为controls的方式,这是您用于定义实例的前缀。我还添加了正确的命名空间Test.Controls。现在,如果你想在屏幕上显示某些东西,在控件命名空间的XAML中,请按照:

<ContentPage xmlns:controls="clr-namespace:Test.Controls" x:Class="Test.MainPage">
  <!-- some stuff here -->
  <controls:ReusableControlHere />
</ContentPage>

ReusableControl可以是您自己的Label版本,Button或几乎所有版本。