我是Xamarin
开发的新手。我创建了新的Xamarin XAML App(Xamarin.Forms Portable)
。在Portable Project中,默认情况下MainPage.Xaml
。要创建MVVM
模型,我创建了三个新文件夹 - Views, ViewModels, and Models
。现在,我在Views文件夹中添加了新的MainPage.Xaml
,并将删除默认的MainPage.Xaml
页面。但在这里我看到两个页面都有所不同。默认MainPage.Xaml
有xmlns: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;
。截图是:
这些MarkUp是什么意思。为什么会有区别。是否需要改变一些事情。我可以删除默认的MainPage.Xaml,还是应该在View中复制它。我需要将标记从默认页面复制到新页面。如果是这样的话? 提前致谢
答案 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
或几乎所有版本。