如何在Xamarin中的XAML中将视图模型绑定到视图?

时间:2019-09-30 13:06:05

标签: xamarin mvvm binding

我有一个非常基本的看法。

 $.ajax({
    url: "{{ route('your_route_name') }}",
    method: 'post',
    cache: false,
    contentType: false,
    processData: false,
    data: formData,
    success: function(response){
        //....YOUR SUCCESS CODE HERE
    },
    error: function(response){
        // HERE YOU CAN GET ALL THE ERRORS IN JSON
        var data = JSON.parse(response.responseText);
        if(data.message){
            if(data.message.f_name){
                $('input[name=f_name]')
                .parents('.form-group')
                .find('.help-block')
                .html(data.message.f_name)
                .css('display','block');
            }else{
                $('input[name=f_name]')
                .parents('.form-group')
                .find('.help-block')
                .html('')
                .css('display','none');
            }
        }else{
            $('.help-block').html('').css('display','none');
        }
    }
});

后面的代码也非常简单:

<ContentPage x:Class="ThetaRex.InvestmentManager.Merlin.Views.ScenarioSelectionPage"
             Title="{Binding Title}"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns="http://xamarin.com/schemas/2014/forms">
    <StackLayout>
        <ListView ItemsSource="{Binding Items}"/>
    </StackLayout>
<ContentPage/>

来自WPF和UWP中的纯MVVM环境,我想将视图绑定到XAML中的视图模型,而不要在后面的代码中使用 this.Binding = ViewModel 。我尝试过:

namespace ThetaRex.InvestmentManager.Merlin.Views
{
    using System.ComponentModel;
    using ThetaRex.InvestmentManager.Merlin.ViewModels;
    using Xamarin.Forms;

    public partial class ScenarioSelectionPage : ContentPage
    {
        public ScenarioSelectionPage()
        {
            InitializeComponent();
            this.BindingContext = this.ViewModel = new ScenarioSelectionViewModel();
        }

        public ScenarioSelectionViewModel ViewModel { get; set; }

        protected override void OnAppearing()
        {
            base.OnAppearing();
            ViewModel.LoadItemsCommand.Execute(null);
        }
    }
}

但是没有用。如何从XAML绑定到ViewModel?

注意:我知道我可以在XAML中从头开始创建视图模型,但是它没有使用视图中的代码所使用的实例,因此这不是一种选择。

1 个答案:

答案 0 :(得分:0)

如果我理解您想要的内容,则解决方案是构建一个像这样的ViewModelLocator:

1. ViewModelLocalizator类

display: flex

2。 在您的视图上使用

display: flexbox