2009-04-17 5 views
0

J'écris une application dans Silverlight qui est supposée récupérer des données de temps de Google et l'afficher ensuite. Je travaillais sur la mise en page dans XAML et j'allais voir à quoi il ressemblait dans le concepteur, mais quand je suis passé au volet concepteur, un petit avis disait qu'un assemblage avait été mis à jour, donc j'ai cliqué dessus, et le contrôle utilisateur a disparu ! J'ai essayé d'enlever des parties du balisage récent mais cela ne semble pas aider. Voici le XAML pour le contrôle de l'utilisateur principal:Le contrôle d'utilisateur Silverlight disparaît dans le concepteur

<UserControl x:Class="TestApp2.Page" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 
    xmlns:wtb="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Extended" 
    xmlns:local="clr-namespace:TestApp2" 
    Width="400" Height="300"> 

    <Grid x:Name="LayoutRoot" Background="#FF5e59e4"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 

     <Border Grid.Row="0" Grid.Column="0" Margin="5" CornerRadius="5" Background="AliceBlue"> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="30" /> 
        <RowDefinition Height="*" /> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="100" /> 
        <ColumnDefinition Width="70" /> 
       </Grid.ColumnDefinitions> 

       <Border Grid.Row="0" Grid.Column="0" Margin="3" Style="{StaticResource RoundedBox}" > 
        <TextBlock x:Name="TextBox" Text="Weather Finder" Margin="5,0,0,0" FontSize="18" VerticalAlignment="Center"/> 
       </Border> 
       <wtb:WatermarkedTextBox Grid.Row="0" Grid.Column="1" Watermark="City..." Margin="2,4,2,4" /> 
       <Button x:Name="SearchButton" Grid.Row="0" Grid.Column="3" Content="Search" VerticalAlignment="Center" Margin="2,0,2,0" /> 

       <!--<ListBox x:Name="DataList" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" Margin="3,0,3,3" />--> 

       <StackPanel Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" Margin="3,0,3,3" Orientation="Vertical"> 
        <local:WeatherBox x:Name="Cur" HorizontalAlignment="Center" /> 

        <StackPanel Orientation="Horizontal"> 
         <local:WeatherBox x:Name="Day1" HorizontalAlignment="Center" /> 
         <local:WeatherBox x:Name="Day2" HorizontalAlignment="Center" /> 
         <local:WeatherBox x:Name="Day3" HorizontalAlignment="Center" /> 
         <local:WeatherBox x:Name="Day4" HorizontalAlignment="Center" /> 

        </StackPanel> 
       </StackPanel> 
      </Grid> 
     </Border> 

    </Grid> 
</UserControl> 

Je dois encore écrire toutes les fonctionnalités dans l'application, de sorte que ne peut pas être le problème. Je crois qu'il pourrait avoir quelque chose à faire avec mon propre WeatherBox (si quelqu'un veut voir le code pour le dire), mais les supprimer du code n'a pas fonctionné. Quel pourrait être le problème? Je pense que je pourrais avoir découvert une raison pour les problèmes. Cette ligne de XAML dans le contrôle Weatherbox obtient une exception quand je lance l'application:

<BitmapImage UriSource="{Binding Thumbnail, Converter={StaticResource BitmapImageConverter}}" /> 

Pour autant que je compris, ce n'est pas possible lieu d'utiliser un liant directement dans le UriSource, j'ai donc essayé d'utiliser un convertisseur. Il semblait fonctionner dans l'éditeur, mais pas lors de la course. Je n'ai toujours aucune idée de ce qui ne va pas.

+0

Y a-t-il d'autres messages? dans la liste des erreurs? – laktak

+0

Oui, il y en a. "Préfixe non déclaré [ligne 18, position 55]", mais je ne vois rien de mal à cette ligne. C'est la deuxième déclaration de grille. – Bevin

+0

En outre, l'erreur indique la ligne 18 et la position 55, mais dans la liste des erreurs, elle est sur la ligne 1 position 1. Étrange. – Bevin

Répondre

1

Cela arrive tout le temps avec les contrôles personnalisés que vous concevez. En ce moment, le support du concepteur de studio visuel est incroyablement feuilleté (silverlight 2 & 3 beta avec visual studio 2008). Il aura un soupir à la moindre chose et ne vous dira jamais pourquoi. Au moins, vous n'obtenez pas l'erreur COM. Le moyen le plus simple de trouver le contrôle qui le provoque est de commencer à commenter des portions de votre XAML jusqu'à ce que vous ayez identifié le contrôle par élimination.

Habituellement, ce sera l'un de vos propres contrôles et il le fera parce que vous essayez de télécharger des données à partir d'un site Web ou d'un service Web, ce qu'il ne peut pas faire en mode concepteur. Tout ce que vous avez à faire est de détecter si c'est en mode design et d'ignorer le code si c'est le cas.

est ici un poste de détection de mode buter de conception: http://blogs.sqlxml.org/bryantlikes/archive/2009/02/25/detecting-design-mode-in-silverlight.aspx

L'erreur liaison n'est pas la cause, mais il ne doit pas être ignoré. Cela signifie qu'un objet auquel vous êtes lié n'a pas la propriété à laquelle vous essayez d'accéder.

+0

J'ai déjà essayé de supprimer les contrôles WeatherBox du contrôle principal, à part ça je ne sais pas ce qui le cause. Je n'ai pas encore écrit le code qui télécharge les données météo, donc je suis perplexe. – Bevin

+0

J'ai commenté tout mon Xaml à l'exception de la grille de base, et cela ne fonctionne toujours pas. – Bevin

Questions connexes