C# 使用数据绑定MainText初始化Xamarin.Forms

C# 使用数据绑定MainText初始化Xamarin.Forms,c#,xamarin.forms,C#,Xamarin.forms,我是Xamarin的新手。当我创建Forms Xaml页面时,VS2015将自动生成如下代码 <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="My

我是Xamarin的新手。当我创建Forms Xaml页面时,VS2015将自动生成如下代码

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"           
         x:Class="MyProject.CountList">

<Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
...

...
我想知道下面这句话是什么意思。看起来像是数据绑定,但我不知道标签要绑定什么。“主文本”是什么?标签在哪里

<Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />

提前谢谢

此部分
Text=“{Binding MainText}”
表示
标签的
Text
属性(在本例中)具有一个名为
MainText
的属性的数据绑定

此属性应在与此视图具有数据绑定的类中可用。设置此类最明显的方法是通过代码隐藏和设置页面的
BindingContext
。这可以是任何东西。因此,它可以是
this
直接将代码绑定到视图,也可以是另一个类,用作ViewModel或PageModel

另一种不太明显的方法是使用MVVM框架。根据框架的不同,视图和视图模型(或页面和页面模型)通过设置一些映射或命名约定绑定在一起。在后一种情况下,如果页面名为“MyListPage”,请查找名为“MyListPageModel”的文件(或类)。在运行时,绑定由框架为您完成

根据您的问题考虑这个简单的示例。这是您的页面,我们称之为
SimpleLabelPage.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"           
         x:Class="MyProject.CountList">

    <Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
</ContentPage>
现在,当运行应用程序时,您应该在UI中看到数据绑定文本

您还可以将其移动到自己的类中,如下所示:

using Xamarin.Forms;

namespace StackOverflowAwesomeness
{
    public string MainText { get; set; }

    public partial class SimpleLabelPage : ContentPage
    {
        public SimpleLabelPage ()
        {
            InitializeComponent ();

            MainText = "Hello from bindings!";
            BindingContext = this;
        }
    }
}
public class SimpleLabelPageModel
{
    public string MainText { get; set; }
}
然后将代码隐藏中的代码更改为:

using Xamarin.Forms;

namespace StackOverflowAwesomeness
{
    public partial class SimpleLabelPage : ContentPage
    {
        public SimpleLabelPage ()
        {
            InitializeComponent ();

            var pageModel = new SimpleLabelPageModel();
            pageModel.MainText = "Hello from bindings!";

            BindingContext = pageModel;
        }
    }
}
这最终会产生同样的效果,但你可以通过这种方式将逻辑从你的观点中分离出来

这就是基本数据绑定101。要了解更多信息,请参阅

您可能还希望查看MvvmCross或FreshMvvm之类的框架,以及
INotifyPropertyChanged
或使用
PropertyChanged.Fody

此部分
Text=“{Binding MainText}”
表示
标签的
Text
属性(在本例中)将数据绑定到名为
MainText
的属性

此属性应在与此视图具有数据绑定的类中可用。设置此类最明显的方法是通过代码隐藏和设置页面的
BindingContext
。这可以是任何东西。因此,它可以是
this
直接将代码绑定到视图,也可以是另一个类,用作ViewModel或PageModel

另一种不太明显的方法是使用MVVM框架。根据框架的不同,视图和视图模型(或页面和页面模型)通过设置一些映射或命名约定绑定在一起。在后一种情况下,如果页面名为“MyListPage”,请查找名为“MyListPageModel”的文件(或类)。在运行时,绑定由框架为您完成

根据您的问题考虑这个简单的示例。这是您的页面,我们称之为
SimpleLabelPage.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"           
         x:Class="MyProject.CountList">

    <Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
</ContentPage>
现在,当运行应用程序时,您应该在UI中看到数据绑定文本

您还可以将其移动到自己的类中,如下所示:

using Xamarin.Forms;

namespace StackOverflowAwesomeness
{
    public string MainText { get; set; }

    public partial class SimpleLabelPage : ContentPage
    {
        public SimpleLabelPage ()
        {
            InitializeComponent ();

            MainText = "Hello from bindings!";
            BindingContext = this;
        }
    }
}
public class SimpleLabelPageModel
{
    public string MainText { get; set; }
}
然后将代码隐藏中的代码更改为:

using Xamarin.Forms;

namespace StackOverflowAwesomeness
{
    public partial class SimpleLabelPage : ContentPage
    {
        public SimpleLabelPage ()
        {
            InitializeComponent ();

            var pageModel = new SimpleLabelPageModel();
            pageModel.MainText = "Hello from bindings!";

            BindingContext = pageModel;
        }
    }
}
这最终会产生同样的效果,但你可以通过这种方式将逻辑从你的观点中分离出来

这就是基本数据绑定101。要了解更多信息,请参阅


您可能还希望查看类似MvvmCross或FreshMvvm和INotifyPropertyChanged之类的框架,或者使用
PropertyChanged.Fody

查看后面的代码(CountList.xaml.cs
文件)。
MainText
属性应该在那里。这告诉视图绑定到其
DataContext
MainText
属性。它将检查分配给DataContext的what ever对象的属性,并反映其中存储的what ever值。检查此处的介绍答案在您的代码隐藏类中,如果您在此处发布完整代码,我们可以回答您,但简短的回答是,此标签绑定到MainText的属性。检查代码隐藏类(CountList.xaml.cs
文件)。应该存在
MainText
属性。这告诉视图绑定到其
DataContext
属性的
MainText
属性。它将检查分配给DataContext的任何对象的属性,并反映其中存储的任何值。如果需要,请在您的代码隐藏类中检查介绍您在这里发布完整的代码,我们可以回答您,但简短的回答是,这个标签绑定到MainText的一个属性。