在Xamarin.Forms上的XAML中将BindingContext设置为ViewModel

法比乌兹:

我想使用Xamarin.Form和MVVM开发一个简单的项目。在我的解决方案(名为XamarinPOC)中,除了标准Xamarin.Forms项目之外,我还有一个单独的模型项目(XamarinPOC.Model)和一个单独的ViewModel项目(XamarinPOC.ViewModel)。

我在XamarinPOC.ViewModel项目中为BaseViewModel类(实现了INotifyPropertyChanged接口)定义了一个抽象类,并在我创建了一个SummaryViewModel类之后,该类使用简单的属性扩展了BaseViewModel类:

namespace XamarinPOC.ViewModel
{
    public class SummaryViewModel : BaseViewModel
    {

        private string _test = "The binding is OK!";
        public String test
        {
            get
            {
                return _test;
            }
            set
            {
                _test = value;
                OnPropertyChanged("test");
            }
        }
        public SummaryViewModel(){}
    }
}

接下来,我在XamarinPOC项目中创建了一个简单的ContentPage(SummatyView),该项目仅包含我要显示ViewModel中定义的文本的标签。我想使用XAML定义视图和绑定,但是当我运行该应用程序时,什么都没有显示,我在编译时和运行时都没有错误,但是没有显示文本。我的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"
             xmlns:local="clr-namespace:XamarinPOC.ViewModel,assembly=XamarinPOC.ViewModel"
             x:Class="XamarinPOC.Summary"
             Title="Summary List"
             BindingContext="XamarinPOC.ViewModel.SummaryViewModel">
  <StackLayout>
    <Label Text="{Binding test}"/>
  </StackLayout>
</ContentPage>

最后我的app.cs是:

 namespace XamarinPOC
{
     public class App : Application
     {
         public App()
         {
             MainPage = new Summary();
         }
     }
 }

在XamarinPOC项目中,我添加了对XamarinPOC.ViewModel和XamarinPOC.Model程序集的引用。

我认为问题出在绑定的XAML定义中,但是我没有找到错误。我哪里错了?

艾哈迈德·埃尔马迪(Ahmad ElMadi):

要将视图绑定到Xaml的viewmodel,请按以下方式进行操作

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:viewModels="clr-namespace:XamarinPOC.ViewModel; assembly=XamarinPOC.ViewModel"
             x:Class="XamarinPOC.Summary"
             Title="Summary List">
  <ContentPage.BindingContext>
    <viewModels:SummaryViewModel/>
  </ContentPage.BindingContext>
  <StackLayout>
    <Label Text="{Binding test}"/>
  </StackLayout>
</ContentPage>

我注意到的一个旁注是命名约定,最好将所有ViewModels(即使只有一个viewModel)放在名为“ ViewModel s的文件夹中,因此您的情况下的命名空间为XamarinPOC.ViewModel s

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Xamarin.Forms中将HeightRequest设置回Auto

如何将ImageSource设置为Xamarin.Forms.Button?

在Xamarin XAML中,如何使用样式在RelativeLayout上设置约束?

如何在Xamarin Forms中将ListView按钮的绑定上下文设置为父级的绑定上下文

Xamarin.Forms从mvvm ViewModel设置焦点

如何在Windows Phone的Xamarin.Forms中将WidthRequest = 50设置为button?

Xamarin.Forms bindingContext将源设置回root / parent

Xamarin-在XAML中将集合设置为自定义可绑定属性

如何在Xamarin.Forms中将CommandParameter设置为ListView项本身

Xamarin.Forms.Xaml.XamlParseException

Jenkins在MacOSX上为Xamarin Forms应用程序设置

如何使用mvvmLight在Xamarin Forms中将数据从ContentPage ViewModel传递到ContentView Viewmodel?

将XAML元素公开到ViewModel以运行方法Xamarin Forms

使用Xamarin Forms在C#中将y轴设置为英尺英寸

将绑定值设置为Xamarin Forms中行为的参数

Xamarin.Forms将视频设置为初始屏幕

C#Xamarin Forms Listview将BindingContext设置为嵌套列表

Xamarin Prism BindingContext到ViewModel的Intellisense数据建议

如何以Xamarin形式在新鲜的mvvm中将相同的viewmodel设置为两个视图

xamarin.forms以xaml设置厚度

Xamarin Forms没有为UITest设置StyleId

Xamarin Forms Switch XAML

如何在xamarin.forms中将背景图像设置为输入单元格

在 Xamarin.Forms 中将图像裁剪为正方形

如何在launch.storybord + xamarin.forms中将图像设置为背景

关于 Xamarin Forms - Xaml 编译

MVVM 中的 Xamarin.Forms bindingContext

xamarin.forms listview 由 BindingContext 和 viewmodel 填充

xamarin.forms 找出什么图片设置为imagesource