2009-09-01 7 views
3

J'ai des problèmes en utilisant Blend avec ma solution de studio visuel.Blend 3 en conception ne trouve pas mes convertisseurs/ressources. (WPF)

En Runtime, et le temps de compilation tout va bien. Comme vous pouvez le voir dans l'image, Blend me pousse à construire le projet, mais il ne change pas la situation, même après une construction réussie, reconstruire, nettoyer & construire, c'est toujours pareil, l'interface est bloquée du designer

Des idées?

alt text http://i29.tinypic.com/rjdpxk.jpg

EDIT: Typos fixes, le problème persiste.

Code Converter:

namespace BlendTest 
{ 
    public class TestConvert : IValueConverter 
    { 
     #region IValueConverter Members 

     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      return ((bool)value) ? Visibility.Visible : Visibility.Collapsed; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 

     #endregion 
    } 
}  



<Window 
    x:Class="XP2Win7.UserInterface.ImageViewer.MainView.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:BlendTest" 
    WindowState="Maximized" 
    WindowStartupLocation="CenterScreen" 
    Background="Transparent" 
    Title="Test"> 
    <Window.Resources> 
     <local:TestConvert x:Key="TestConvert"/> 
    </Window.Resources> 
    <Grid x:Name="RootLayout" > 
     <TextBlock Text="Hello" Visibility="{Binding IsMargol, Converter={StaticResource TestConvert}}" FontSize="48" FontWeight="Bold" /> 
    </Grid> 
</Window> 

Merci Ariel

+0

Pouvez-vous ajouter les déclarations XAML, à la fois de votre espace de nom, et de tous les contrôles utilisant ce convertisseur? –

+0

Bien sûr. Terminé. Retiré l'autre convertisseur de sorte qu'il sera plus facile à suivre. le problème persiste en ce qui concerne le TestConvert – ArielBH

+0

J'ai édité ma réponse avec ma meilleure estimation à ce stade. –

Répondre

0

Eh bien, alors que la cause du problème est encore inconnu pour moi.

La solution au mess était comme suit:

  1. J'ai créé un nouveau projet de code bibliothèque, et déménagea tous mes contrôles et convertisseurs. J'ai utilisé l'attribut XmlnsDefinition pour décorer l'ensemble de sorte que chacun correspondait au même espace de noms.

  2. fixer toutes les références.

et Voilà.

Ariel

+1

Souhaitez-ils résoudre ce problème ... – Kelly

+1

Et je souhaite encore qu'ils régleraient cela. Soupir... – Kelly

0

Il semble que vous avez des fautes de frappe dans votre XAML:

Alubm au lieu de Album et BlentTest au lieu de BlendTest

Je m devinant que les erreurs sont en fait de vraies erreurs de compilation, et corriger les deux fautes ci-dessus va probablement "réparer" le concepteur.


Edit:

Le candidat le plus probable que je vois est que votre convertisseur est dans un projet distinct de votre fichier XAML (mais dans la même solution). Si c'est le cas, assurez-vous de spécifier l'assembly dans la déclaration XAML et assurez-vous que l'autre projet (avec BlendTest) est référencé correctement. à savoir:

xmlns:local="clr-namespace:BlendTest;assembly:BlendTest" 

Si votre référence à un type (avec espace de noms) défini dans un autre projet, la référence de montage doit exister, aussi bien.

+0

Non, les fautes de frappe sont assez compatibles pour qu'il compile :) – ArielBH

+0

Il ne compile pas avec succès. Il vous montre les erreurs de compilation réelles dans votre fichier XAML au bas de la fenêtre. –

+0

Cela fait partie du problème. Visual Stdio le compile sans problèmes, Blend le compile sans problèmes (la fenêtre de sortie indique "La construction a été terminée avec succès.") – ArielBH

0

Qu'est-ce qui a fonctionné pour moi?

La modification du chemin de sortie de compilation de bin/x86/Debug vers bin/Debug a fonctionné pour moi. Mais cela n'a toujours pas de sens puisque ma cible de plate-forme a été définie 'x86'. J'ai donc décidé de m'attarder davantage sur le problème et j'ai découvert que la sélection de la plate-forme dans la liste déroulante 'x86' ne reflétait pas la valeur définie dans le fichier de configuration du projet.

J'ai déchargé le projet dans VS, ouvert le fichier .csproj dans l'éditeur pour voir quelle est la valeur de 'Platform'. À ma grande surprise, il est réglé sur «Any CPU» tandis que la liste déroulante sous les options de construction a montré «x86». Tout ce que j'ai fait était d'éditer manuellement le fichier .csproj pour lire 'x86'.

Voici les étapes pour résoudre:

  • Faites un clic droit sur le projet VS
  • Décharger
  • clic droit et modifier .csproj
  • Assurez-vous que 'Plate-forme' est réglé sur le correct
Questions connexes