2016-01-21 24 views
1

Chaque fois que je lie la propriété de texte pour afficher la propriété modèletexte visible sur concepteur VS 2015 lorsque la valeur du champ de texte de commande est binded

<TextBlock Text="{Binding SomeExampleText}"/> 

sur le designer, je ne vois rien à l'endroit où mon texte apparaîtra dans l'exécution. Quand j'utilise x: Bind:

<TextBlock Text="{x:Bind ViewModel.SomeExampleText}"/> 

sur le designer, je vois « ViewModel.SomeExampleText », parfois, il ne montre pas pleine longueur en raison de l'espace manquant (si le chemin de liaison est trop long).

Existe-t-il un moyen d'afficher du texte personnalisé dans le concepteur uniquement pour l'aperçu au lieu du chemin de liaison ou rien de tel que ci-dessus?

+0

Voir [ce poste] (http://stackoverflow.com/questions/18495471/adding-rows-to-datagrid-through-xaml/18495961?noredirect=1 # comment57579004_18495961) sur les données de conception. – dotNET

+0

Je ne pense pas que la duplication de tous les contrôles dont la propriété texte est liée à dummy est un bon moyen ... Une autre solution tout aussi mauvaise consiste à ajouter une liaison à partir du code, mais ce n'est pas ce que je recherche. – RTDev

Répondre

1

Il existe des moyens de créer des modèles de vue spécifiquement pour la conception. La plus simple approche est sans doute celle-ci:

<TextBlock Text="{x:Bind ViewModel.SomeExampleText, FallbackValue='Hello!'}"/> 

Que l'on montre la chaîne « Bonjour » dans le concepteur, à la fois avec Binding et x:Bind.

Pour Binding vous pouvez définir quelque chose comme contexte de données temps de conception ceci:

<Page 
    ... 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:viewModels="using:MyNameSpace.ViewModels" 
    d:DataContext="{d:DesignInstance Type=viewModels:DesignTimeViewModel, IsDesignTimeCreatable=True}" 
    mc:Ignorable="d"> 

Le DesignTimeViewModel n'a pas besoin de relation spcecific à votre modèle de vue d'exécution; il doit seulement avoir des propriétés appropriées avec les mêmes noms. Si vous liez des collections, c'est probablement votre meilleur pari.

+0

Fallbackvalue fait exactement ce que je veux, merci – RTDev

0

Créez un modèle de vue spécifique pour la vue Création afin de définir la mise en page et le style de la vue avec des données réalistes qui ne pénètreront pas dans l'environnement d'exécution. Comme x: Bind recherche dans le code-behind une source de données fortement typée, vous devez imiter ce chemin de liaison de données en mode Création. Voici une façon:

Appliquez l'attribut d: DataContext à votre vue définissez la propriété Type à votre vue. Lorsque "IsDesignTimeCreatable" est vrai, il va créer une nouvelle instance de votre code-behind.

d:DataContext="{d:DesignInstance Type=local:MainPage,IsDesignTimeCreatable=True}" 

Votre code-behind a probablement une propriété ViewModel qui peut être réglé à un état en temps de conception avec des données fausses ou un état d'exécution avec des données réelles.

Ce blog montre un exemple: http://fast417.blogspot.com/2016/06/uwp-design-preview-with-xbind.html