Erreur de modèles WPF - "Fournir une valeur sur 'System.Windows.Baml2006.TypeConverterMarkupExtension' a généré une exception."
J'ai juste commencé à expérimenter avec WPF modèles vs styles et je ne suis pas sûr de ce que je fais mal. L'objectif ci-dessous est d'alterner les couleurs des options dans le menu. Le code fonctionne très bien avec juste le , mais quand je fais un copier-coller/renommer pour le deuxième volet de "MenuChoiceOdd" j'obtiens l'erreur suivante:
> apporter de la valeur sur "Système".De Windows.Baml2006.TypeConverterMarkupExtension' a déclenché une exception.
Échantillon de code:
<Window x:Class="WpfApplication1.Template_Testing"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Template_Testing" Height="300" Width="300">
<Grid>
<Grid.Resources>
<ControlTemplate x:Key="MenuChoiceEven">
<Border BorderThickness="1" BorderBrush="#FF4A5D80">
<TextBlock Height="Auto" HorizontalAlignment="Stretch" Margin="0" Width="Auto" FontSize="14" Foreground="SlateGray" TextAlignment="Left" AllowDrop="True" Text="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}">
<TextBlock.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="White" Offset="0" />
<GradientStop Color="#FFC2CCDB" Offset="1" />
</LinearGradientBrush>
</TextBlock.Background>
</TextBlock>
</Border>
</ControlTemplate>
<ControlTemplate x:Key="MenuChoiceOdd">
<Border BorderThickness="1" BorderBrush="#FF4A5D80">
<TextBlock Height="Auto" HorizontalAlignment="Stretch" Margin="0" Width="Auto" FontSize="14" Foreground="SlateGray" TextAlignment="Left" AllowDrop="True" Text="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}">
<TextBlock.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="White" Offset="0" />
<GradientStop Color="##FFCBCBCB" Offset="1" />
</LinearGradientBrush>
</TextBlock.Background>
</TextBlock>
</Border>
</ControlTemplate>
</Grid.Resources>
<Border BorderBrush="SlateGray" BorderThickness="2" Margin="10" CornerRadius="10" Background="LightSteelBlue" Width="200">
<StackPanel Margin="4">
<TextBlock Height="Auto" HorizontalAlignment="Stretch" Margin="2,2,2,0" Name="MenuHeaderTextBlock" Text="TextBlock" Width="Auto" FontSize="16" Foreground="PaleGoldenrod" TextAlignment="Left" Padding="10" FontWeight="Bold"><TextBlock.Background><LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="LightSlateGray" Offset="0" /><GradientStop Color="DarkSlateGray" Offset="1" /></LinearGradientBrush></TextBlock.Background></TextBlock>
<StackPanel Height="Auto" HorizontalAlignment="Stretch" Margin="2,0,2,0" Name="MenuChoicesStackPanel" VerticalAlignment="Top" Width="Auto">
<Button Template="{StaticResource MenuChoiceEven}" Content="Test Even menu element" />
<Button Template="{StaticResource MenuChoiceOdd}" Content="Test odd menu element" />
</StackPanel>
</StackPanel>
</Border>
</Grid>
</Window>
Ce que je fais mal?
source d'informationauteur jasonk
Vous devez vous connecter pour publier un commentaire.
Oy, c'est lundi...
Quand j'ai copié collé la chaîne de couleur d'un autre contrôle, il a mis deux "##"s dans le préfixe ici:
Encore un mauvais message d'erreur.
De même pour les autres - cet horrible message d'erreur voulait juste dire que j'avais une erreur de syntaxe dans mon xaml:
Avis je n'avais pas rempli la valeur de la hauteur..
J'ai eu la même erreur causée par:
fixe en mettant un nombre dans BorderThickness
Dans mon cas, j'ai changé le nom du projet. Après j'ai eu cette erreur. Je re-sélectionné les images et vu que j'avais besoin de changer le nom de la ressource d'images trop.
/PRÉC.%20-%20Filter;le composant doit être corrigée à l' /DSP%20-%20Filter;et dans mon cas.
Attribution Width="*" sur la Grille m'a donné l'erreur, qui fait un peu bizarre la première fois, mais tout ce qu'il essaie de dire, c'est que le balisage ne pouvait pas être converti de type réel.
Contrairement à d'autres, j'ai eu mon code XAML de la syntaxe correcte.
Cette erreur commencé à apparaître lorsque j'ai changé mon image - plus tard, j'ai réalisé que je n'changer l'image dans mon dossier, mais j'ai oublié de Inclure dans mon projet .
Donc bien que XAML pourrait me montrer l'image dans Desgn' Affichage - j'ai fait face à cette exception @ moment de l'exécution.
Idiot.
Voici un autre exemple de cette erreur et comment je l'ai résolu.
Cela semble avoir été causée par la mise à jour de mon projet de VS2010 pour VS2012 et VS2013. Vous ne savez pas exactement pourquoi ce serait un problème ici, mais j'imagine que c'est.
J'ai développé un Assistant Visual Studio pour automatiser le processus d'ajout d'un projet pour notre très grande solution (300+ projets) qu'il y a des exigences supplémentaires pour nous, les développeurs, pour aider à maintenir le projet. J'ai utilisé WPF pour l'assistant et qui a bien fonctionné pour VS2010. J'ai mis à jour le projet de VS2012 et VS2013 et j'ai commencé à faire cette erreur. S'avère que, à un certain moment, mon chemin vers l'icône et les fichiers d'image a été foiré. Une fois que j'ai corrigé ce que j'ai fait directement dans le XAML - j'ai arrêté l'obtention de l'erreur.
Dans le cas où vous mai besoin d'aide pour le référencement des ressources - c'est le post que j'ai utilisé pour corriger mes questions: Comment référencer une ressource d'icône de fichier de référence dans le code XAML
J'avais la même quand j'ai oublié les accolades:
J'ai été chargé de corriger un bug où un message d'erreur similaire a été montré à l'infini. Quand j'ai découvert que le suivant qui a causé le problème, j'ai été un peu déçu (m'attendais à quelque chose de plus complexe et catastrophique!):
où LinkButton doit avoir été LinkButtonStyle.
J'ai eu le même message d'erreur lors de l'utilisation de Gris au lieu de Gris dans mon BorderBrush
au lieu de
J'ai eu la même erreur, mais a été en utilisant le mauvais chemin pour l'image dans le dossier des ressources
J'ai eu cette...
mais j'avais besoin de ce...
Avait à ajouter ../au début de retourner un dossier de première