2016-08-19 59 views
0

我想通过xaml而不是后端代码设置BindingContext。目前我是这样分配的:Xamarin MVVM Light ViewModelLocator设置xaml中的BindingContext

public partial class MainPage : ContentPage 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
     BindingContext = App.Locator.Main; 
    } 
} 

我该如何通过Xaml来分析BindingContext?我想是这样的:

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> 

的App.xaml

<?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不存在错误。

回答

0

您应该在页眉上定义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}}" 

凡在我的示例代码我的StaticResources都在xmlnss:local命名空间定义如上。

相关问题