C# Xamarin MVVM Light ViewModelLocator在xaml中设置BindingContext

C# Xamarin MVVM Light ViewModelLocator在xaml中设置BindingContext,c#,xaml,mvvm,xamarin,C#,Xaml,Mvvm,Xamarin,我想通过xaml而不是后端代码来设置BindingContext。目前我的任务如下: public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); BindingContext = App.Locator.Main; } } 如何通过Xaml分配BindingContext?我试着这样做: public partial cl

我想通过xaml而不是后端代码来设置BindingContext。目前我的任务如下:

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
        BindingContext = App.Locator.Main;
    }
}
如何通过Xaml分配BindingContext?我试着这样做:

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
        BindingContext = App.Locator.Main;
    }
}
LoginPage.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="Codesign.DtpMobilePortable.Views.LoginPage" BindingContext="{Binding LoginPage, Source={StaticResource ViewModelLocator}}"> 
  <StackLayout Spacing="20" Padding="50" VerticalOptions="Center">

    <Entry x:Name = "EntryUsername" Text="{Binding EntryUsernameText}" Placeholder = "Username"/>  
    <Entry x:Name = "EntryPassword" Text="{Binding EntryPasswordText}" Placeholder = "Password" IsPassword = "true"   />

    <Button x:Name = "ButtonLogin"
                        Text = "{Binding LoginButtonText}"
                        TextColor = "White"
                        BackgroundColor = "{Binding LoginButtonColor}" Command="{Binding LoginCommand}"/>    
  </StackLayout>
</ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<Application xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:viewModels="clr-namespace:Codesign.DtpMobilePortable.ViewModels;assembly=Codesign.DtpMobilePortable"
             x:Class="Codesign.DtpMobilePortable.Views.App">
<Application.Resources>
    <viewModels:ViewModelLocator
        x:Key="ViewModelLocator" />
</Application.Resources>
</Application>

App.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="Codesign.DtpMobilePortable.Views.LoginPage" BindingContext="{Binding LoginPage, Source={StaticResource ViewModelLocator}}"> 
  <StackLayout Spacing="20" Padding="50" VerticalOptions="Center">

    <Entry x:Name = "EntryUsername" Text="{Binding EntryUsernameText}" Placeholder = "Username"/>  
    <Entry x:Name = "EntryPassword" Text="{Binding EntryPasswordText}" Placeholder = "Password" IsPassword = "true"   />

    <Button x:Name = "ButtonLogin"
                        Text = "{Binding LoginButtonText}"
                        TextColor = "White"
                        BackgroundColor = "{Binding LoginButtonColor}" Command="{Binding LoginCommand}"/>    
  </StackLayout>
</ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<Application xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:viewModels="clr-namespace:Codesign.DtpMobilePortable.ViewModels;assembly=Codesign.DtpMobilePortable"
             x:Class="Codesign.DtpMobilePortable.Views.App">
<Application.Resources>
    <viewModels:ViewModelLocator
        x:Key="ViewModelLocator" />
</Application.Resources>
</Application>


但是我发现关于StaticResource的错误不存在。

您应该在页眉上定义
StaticResources
名称空间

诸如此类的事:

<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:Codesign.DtpMobilePortable;assembly=Codesign.DtpMobilePortable"
         xmlns:Vm="clr-namespace:Codesign.DtpMobilePortable.ViewModel;assembly=Codesign.DtpMobilePortable"
         x:Class="Codesign.DtpMobilePortable.Views.LoginPage"
         BindingContext="{Binding LoginPage, Source={StaticResource ViewModelLocator}}"

您应在页眉上定义
静态资源
名称空间

诸如此类的事:

<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:Codesign.DtpMobilePortable;assembly=Codesign.DtpMobilePortable"
         xmlns:Vm="clr-namespace:Codesign.DtpMobilePortable.ViewModel;assembly=Codesign.DtpMobilePortable"
         x:Class="Codesign.DtpMobilePortable.Views.LoginPage"
         BindingContext="{Binding LoginPage, Source={StaticResource ViewModelLocator}}"