2017-01-27 5 views
0

MVVM LightとUWPの初心者のチュートリアルに従っています。MVVM Light UWPビューは設計時にのみ表示されます

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

ViewModelLocatorがApp.xamlで、次のように定義されています:

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

とViewModelLocatorクラス私はこのようなメインビューでのTextBlockにバインドされているだけで文字列フィールドでのViewModelを持っています次のようになります。

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

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

をViewModelに、私は、コンストラクタでこれを持っている:

Title = "Hello world!"; 

デザインタイムでは、テキストはデザイナーでうまく表示されますが、アプリを実行すると空白のページしか表示されません。その理由を特定できません。

提案があれば助かります。

答えて

0

私は、Design Time DataContextと宣言しているだけで、ビューの属性にRuntime DataContextも宣言する必要があります。 、 `のDataContext =" {バインディングStartPageInstance:唯一のDataContextはStartPage.xamlで宣言さ

<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

はこの1つです:あなたはそのような何かを持っていますが、この後

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

:このために、以下の追加Source = {StaticResource Locator}} "' –

+0

私が質問で言ったように、私は設計時のテキストを見るが、実行時には見えない。 –

+0

Titleプロパティの設定者に通知していますか? –

関連する問題