Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

6 mai 2014 2 06 /05 /mai /2014 15:07

Je reprends le même exemple vu dans l'article précédent auquel j'ajoute un ViewModel contenant une propriété message que la vue associée affichera

 

Convention :

Pourquoi respecter cette convention ? parce que sinon Prism ne retrouvera pas ses petits icon_surprised.gif

 

-          Les Views sont dans un dossier « Views »

o   avec le namespace « *.Views »

o   et un nom de vue se terminant par « Page » (exemple HubPage)

-          Les ViewModels sont dans un dossier « ViewModels »

o   avec le namespace « *.ViewModels »

o   et un nom finissant par « ViewModel »

 

ViewModel

Je me contenterai d’afficher le message  dans la vue associée

    // ViewModel --> Microsoft.Practices.Prism.StoreApps 

    public class HelloViewModel :ViewModel 

    {

        public string Message { get; set; }

 

        public HelloViewModel()

        {

            Message = "Hello world";

        }

    }

 

App.xaml.cs

    sealed partial class App : MvvmAppBase 

    {

        public App()

        {

            this.InitializeComponent();

        }

 

        protected override Task OnLaunchApplication(LaunchActivatedEventArgs args)

        {

           NavigationService.Navigate("Hub", null);

           Window.Current.Activate();

           return Task.FromResult<object>(null);

        }

 

        protected override void OnInitialize(IActivatedEventArgs args)

        {

            base.OnInitialize(args);

          

 

            // 1 

            //ViewModelLocator.SetDefaultViewTypeToViewModelTypeResolver((viewType) => 

            //    {

            //        if (viewType == typeof(HubPage))

            //            return typeof(HelloViewModel);

            //        else

            //            return null;

            //    });

 

            // 2 Autre possibilité

            ViewModelLocator.Register(typeof(HubPage).ToString(),()=> new HelloViewModel());

 

            ViewModelLocator.SetDefaultViewModelFactory((viewModelType) =>

                {

                    return Activator.CreateInstance(viewModelType);

                });  

        }

    }

 

HubPage

Ne pas oublier d’ajouter dans la vue

Prism:ViewModelLocator.AutoWireViewModel="True"


<Prism:VisualStateAwarePage 

    x:Name="pageRoot" 

    x:Class="Shop.PrismWinRT.Views.HubPage" 

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

    xmlns:local="using:Shop.PrismWinRT.Views"

    xmlns:common="using:Shop.PrismWinRT.Common"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

     xmlns:Prism="using:Microsoft.Practices.Prism.StoreApps"

    Prism:ViewModelLocator.AutoWireViewModel="True"

    mc:Ignorable="d">

 

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

        <Grid.ChildrenTransitions>

            <TransitionCollection>

                <EntranceThemeTransition/>

            </TransitionCollection>

        </Grid.ChildrenTransitions>

        <Grid.RowDefinitions>

            <RowDefinition Height="140"/>

            <RowDefinition Height="140"/>

            <RowDefinition Height="*"/>

        </Grid.RowDefinitions>

 

        <Grid>

            <Grid.ColumnDefinitions>

                <ColumnDefinition Width="120"/>

                <ColumnDefinition Width="*"/>

            </Grid.ColumnDefinitions>

              <TextBlock x:Name="pageTitle"

                         Text="{StaticResource AppName}"

                         Style="{StaticResource HeaderTextBlockStyle}"

                         Grid.Column="1"

                         IsHitTestVisible="false"

                         TextWrapping="NoWrap"

                         VerticalAlignment="Bottom"

                         Margin="0,0,30,40"/>

        </Grid>

        <TextBlock Text="{Binding Message}"

                   Style="{StaticResource BodyTextBlockStyle}"

                   Grid.Row="1" Margin="150,40"

                  

                   />

 

    </Grid>

</Prism:VisualStateAwarePage>

 

 

helloprismwinrt

Partager cet article

Repost 0
Published by Romagny13 - dans Prism for WinRT
commenter cet article

commentaires