2016-08-19 58 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命名空間定義如上。

相關問題