2017-01-27 2 views
0

Je suis un tutoriel débutant sur MVVM Light et UWP. J'ai un ViewModel avec juste un champ de chaîne qui est lié à un TextBlock en vue principale comme ceci:Affichage MVW Light UWP affiché uniquement au moment du design

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <TextBlock Name="Title" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24" Text="{Binding Title}" /> 
</Grid> 

Le ViewModelLocator est défini comme celui-ci dans App.xaml:

<Application.Resources> 
    <vm:ViewModelLocator xmlns:vm="using:MvvmLight.UWP.ViewModels" x:Key="Locator" /> 
</Application.Resources> 

et la classe ViewModelLocator ressemble à ceci:

public ViewModelLocator() 
{ 
    ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); 
    SimpleIoc.Default.Register<StartPageViewModel>(); 
} 

public StartPageViewModel StartPageInstance 
{ 
    get { return ServiceLocator.Current.GetInstance<StartPageViewModel>(); } 
} 

dans le ViewModel j'ai ce dans le constructeur:

Title = "Hello world!"; 

Maintenant, dans Design Time, le texte semble bien dans le concepteur, mais lorsque j'exécute l'application, je n'ai qu'une page blanche et je n'arrive pas à comprendre pourquoi.

Toute suggestion aiderait.

Répondre

0

Je pense, vous ne déclarez que le Design Time DataContext, vous devez également déclarer le Runtime DataContext dans les attributs de votre vue. Pour cela, ajoutez ce qui suit:

DataContext="{Binding Source={StaticResource Locator}, Path=StartPageInstance}" 

Après cela, vous aurez quelque chose comme ça:

<Page 
    x:Class="App1.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:App1" 
    xmlns:design="using:App1.Design" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    DataContext="{Binding Source={StaticResource Locator}, Path=StartPageInstance}" 
    d:DataContext="{d:DesignInstance Type=design:DesignStartPageInstance, IsDesignTimeCreatable=True}" 
    mc:Ignorable="d"> 
+0

Le seul DataContext déclaré dans StartPage.xaml est celui-ci: 'DataContext =" {Reliure StartPageInstance, Source = {StaticResource Locator}} "' –

+0

Comme je l'ai dit dans la question, je vois le texte de l'heure de conception, je ne le vois pas à l'exécution. –

+0

Le setter de la propriété Title notifie-t-il? –