C# 使用数据绑定MainText初始化Xamarin.Forms
我是Xamarin的新手。当我创建Forms Xaml页面时,VS2015将自动生成如下代码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
<?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的一个属性。