2010-04-03 3 views
0

Dans mon application, j'aidonner le mode de conception WPF objets par défaut

<Rectangle.Margin> 
    <MultiBinding Converter="{StaticResource XYPosToThicknessConverter}"> 
     <Binding Path="XPos"/> 
     <Binding Path="YPos"/> 
    </MultiBinding> 
</Rectangle.Margin> 

Le contexte de données est défini lors de l'exécution. L'application fonctionne, mais la fenêtre de conception dans VS n'affiche pas un aperçu mais System.InvalidCastException. C'est pourquoi j'ai ajouté un objet par défaut dans le XYPosToThicknessConverter qui est moche.

class XYPosToThicknessConverter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
    // stupid check to give the design window its default object. 
     if (!(values[0] is IConvertible)) 
      return new System.Windows.Thickness(3, 3, 0, 0); 
    // useful code and exception throwing starts here 
    // ... 
    } 
} 

Mes questions:

  • Qu'est-ce que VS/processus qui construit le passage de la fenêtre de la conception à la XYPosToThicknessConverter et ce qui est une façon de le trouver par moi-même.
  • Comment puis-je modifier mon code XAML, afin que la fenêtre de conception obtienne son objet par défaut et est-ce la meilleure façon de gérer ce problème?

J'utilise VS2010RC avec Net4.0

Répondre

0

Vous devez vous assurer que le concepteur peut obtenir une copie valide de « XPos » et « YPos », et ils sont les mêmes valeurs que lors de l'exécution.

Il est possible que votre DataContext ne soit pas correctement défini dans View, donc le convertisseur est nul. Si vous définissez le DataContext sur un objet valide (qui peut être des données de conception), votre code doit fonctionner sans les valeurs par défaut dans le convertisseur.

1

Essayez de définir une valeur de repli sur votre reliure. C'est ce que je fais pour que les choses s'affichent «comme si» en mode design.

Something="{Binding Smthing, FallbackValue='hello world'}" 

HTH

+0

Cela m'a rendu heureux. Je lie plusieurs propriétés de dépendance sur certains blocs de texte. Ils sont apparus vides dans le concepteur qui était ennuyeux, mais ce petit tour résout cela. Cela me permet de gérer le positionnement, le formatage du texte, etc. –

Questions connexes