web-dev-qa-db-fra.com

Comment voir la liaison de données au moment du design dans l'éditeur XAML (cela fonctionne en runtime)?

Le numéro de version lié aux données doit apparaître comme suit:

<Window <!-- ... --> DataContext="{Binding RelativeSource={RelativeSource Self}}">
    <Grid>
        <TextBlock>
            Version is: 
            <Run Text="{Binding Version, Mode=OneWay}"></Run>
            and advancing...
        </TextBlock>
    </Grid>
</Window>

et cela fonctionne pendant l'exécution.

Comment puis-je le voir lors de la conception dans l'éditeur XAML de Visual Studio 2012? Je vois seulement:

Version is: and advancing...

au lieu de:

Version is: 5.2.2 and advancing...

EDIT - Ma solution:

La réponse de Jure ci-dessous fonctionne, mais j'ai fini par utiliser une technique de code statique du modèle de vue factice , qui fonctionne mieux pour moi car les données sont une maquette du modèle de vue réel type:

d:DataContext="{Binding Source={StaticResource DesignViewModel}}" ...
27
Tar

Réponse courte, vous ne pouvez pas le faire de cette façon. VS designer n'exécute pas de code d'exécution et votre liaison ne sera pas résolue au moment de la conception. Mais les données de conception sont prises en charge via d:DesignData extension.

Vous pouvez définir le contexte des données de conception de cette façon:

<Window xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.Microsoft.com/expression/blend/2008" 
    mc:Ignorable="d" 
    d:DataContext="{d:DesignData Source=/SampleData/SomeSampleData.xaml}"
    DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
    <TextBlock>
        Version is: 
        <Run Text="{Binding Version, Mode=OneWay}"></Run>
        and advancing...
    </TextBlock>
</Grid>

d:DataContext={d:DesignData.... définit le temps de conception DataContext qui sera utilisé pour résoudre les liaisons dans la surface du concepteur VS. Vous pouvez le définir dans un fichier xaml qui contient vos exemples de données. Un exemple de fichier xaml doit être généré avec l'action de création "DesignData".

Voir plus ici: http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/30/sample-data-in-the-wpf-and-silverlight-designer.aspx

18
jure

Assurez-vous que vous disposez de ces définitions dans la balise racine de votre fichier xaml (dans votre cas, la balise Window):

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.Microsoft.com/expression/blend/2008"
mc:Ignorable="d"

Ensuite, n'importe où dans le xaml (y compris la balise racine), vous pouvez ajouter ceci:

d:DataContext="{d:DesignInstance myNamespace:MyViewModel, IsDesignTimeCreatable=True}"

Il ne vous reste plus qu'à vous assurer d'initialiser les valeurs dans un constructeur ou d'avoir des valeurs par défaut pour les propriétés.

Si vous devez exécuter une logique spéciale pour le mode conception, regardez cette réponse .

44
XAMeLi