【问题标题】:Default XAML page and New XAML page in Xamarin Forms is not identicalXamarin Forms 中的默认 XAML 页面和新 XAML 页面不相同
【发布时间】:2018-01-13 14:57:16
【问题描述】:

我是 Xamarin 开发的新手。我创建了新的Xamarin XAML App(Xamarin.Forms Portable)。在便携式项目中,默认情况下是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" />,但默认没有。截图如下:

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

【问题讨论】:

    标签: xaml xamarin.forms


    【解决方案1】:

    两个页面是相同的,并且将以相同的方式显示。

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

    xmlns:local="clr-namespace:Test"
    

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

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

    【讨论】:

      【解决方案2】:

      太棒了,您决定从 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 可以是您自己版本的 LabelButton 或几乎任何东西。

      【讨论】:

      • 解释得很好!但是Label Text={Binding MainText}。你能说出 MainText 是什么吗?
      • MainText 应该是您的 DataContext(您的 ViewModel)中字符串类型的属性
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多