web-dev-qa-db-fra.com

'Fournir une valeur sur' System.Windows.Baml2006.TypeConverterMarkupExtension 'a généré une exception.'

L'exception dans le titre est levée lorsque j'ouvre une fenêtre dans WPF. Ce qui est étrange, c'est que cela ne se produit pas sur mon ordinateur de développement Windows 7 ni quand il est déployé sous Windows 7.

Je ne reçois cette erreur que sous Windows XP et seulement la deuxième fois que j'ouvre la fenêtre.

Voici le code pour ouvrir la fenêtre:

ReportParametersWindow win = null;

      bool canOverWrite = _shownReports.Contains(rpt.FriendlyName);

      if (!(canOverWrite))
        win = new ReportParametersWindow(rpt.FriendlyName, rpt.ReportParameters, canOverWrite);
      else
        win = new ReportParametersWindow(rpt.FriendlyName, (container.ParametersWindow as ReportParametersWindow).Controls, canOverWrite);

      win.ShowDialog();

Et le XAML pour la fenêtre:

<Window xmlns:my="clr-namespace:MHA.Modules.Core.Controls;Assembly=MHA.Modules.Core"  
    x:Class="MHA.Modules.Reports.Views.ReportParametersWindow"
    xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
    Title="Parameters" Height="500" Width="600" MinWidth="500" MaxHeight="500" 
    Icon="/MHA.Modules.Reports;component/Images/Parameters.ico" SizeToContent="WidthAndHeight" 
    WindowStartupLocation="CenterScreen"
    xmlns:odc="clr-namespace:Odyssey.Controls;Assembly=Odyssey" Closed="Window_Closed">

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="40"/>
    </Grid.RowDefinitions>
    <ScrollViewer Grid.Row="0" Name="ScrollViewer1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" CanContentScroll="True">
        <StackPanel Name="ParameterStack">
            <my:LocationCtl Text="Parameters for report - " Name="loc"/>
        </StackPanel>
    </ScrollViewer>
    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>

        <CheckBox ToolTip="This will replace the first report of the same type that was shown." Name="chkOverwrite" Content="Overwrite old" VerticalAlignment="Center" Margin="5,0"></CheckBox>

        <Button Grid.Column="2" HorizontalAlignment="Right" Margin="5,0" Height="30" Style="{StaticResource DionysusButton}" Width="100" IsDefault="True" Click="Button_Click">
            <StackPanel Orientation="Horizontal">
                <Image Source="/MHA.Modules.Reports;component/Images/Success.png"></Image>
                <TextBlock Margin="5,0" Text="Accept" VerticalAlignment="Center"></TextBlock>
            </StackPanel>
        </Button>
    </Grid>
</Grid>

Est-ce que quelqu'un a des suggestions?

31
Chrisjan Lodewyks

La solution est assez étrange mais je l’ai trouvée.

J'ai réalisé que l'erreur se produisait sur le InitializeComponent () de la fenêtre, puis j'ai ajouté un catch try au constructeur et j'ai montré l'innerException de l'exception. 

L'erreur que j'ai reçue est "Format d'image non reconnu".

Je ne sais pas pourquoi cela se produit uniquement sur XP et la deuxième fois que la fenêtre est affichée, mais en remplaçant mon .ico par un fichier .png, le problème a été résolu.

J'espère que ça aide quelqu'un.

43
Chrisjan Lodewyks

Je viens de rencontrer ce problème aussi ... Je sais que c'est vieux, mais ce que je devais faire était de définir les images sur Ressource, et Copier toujours ... uniquement en parcourant mon dossier/bin/Debug. que les images n'étaient pas à un emplacement de chemin valide

23
Kevin

Ce problème peut également se produire si l'image requise n'est pas disponible à l'emplacement spécifié. Vérifiez donc l’exception interne et ajoutez toute image manquante ou mal orthographiée. 

11
user2125523

J'ai eu cette erreur parce que ma reliure de commande d'un bouton était incorrecte:

<Button Command="MyCommand" />

au lieu de

<Button Command="{Binding MyCommand}" />
7
McNos

Dans mon cas, la cause fondamentale était la propriété BuildAction incorrecte sur toutes les images. Je l'ai corrigé en changeant BuildAction de Content en Resource.

4
Ludwo

J'ai eu cette exception après avoir déplacé mon dictionnaire de ressources de la racine de mon application vers un sous-répertoire. Dans mon cas, le problème résidait dans les chemins d’image dans mes régleurs de style dans le dictionnaire. Après les avoir précédés d'une barre oblique '/', l'application a recommencé à fonctionner. Si vous rencontrez un problème similaire, ouvrez le dictionnaire de ressources et l'erreur sera mise en surbrillance avec la ligne bleue 'ondulée'.

2
Eternal21

Dans mon cas, j'ai ajouté la référence 'Wpf Toolkit' à mon module, et il n'y a aucun besoin… .. Après avoir supprimé cette référence, tout s'est bien passé. Étrange!

2
Amit K.S

Allez simplement dans Projet> [Nom de votre projet] Paramètres et définissez votre fichier .ico comme icône. Votre fichier .ico est maintenant mentionné dans votre fichier manifeste. Vous pouvez simplement inclure votre fichier .ico dans votre fichier XAML à l'aide de 

Icon = "[nom de fichier de l'icône] .ico" 

<Window  x:Class="[Your project's name].MainWindow"
    xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
    Title="" Height="500" Width="720"
     Icon="[your icon's name].ico">
1
Kamal Hasan

copier et coller le nom du fichier est modifié. c'est pourquoi je reçois cette erreur.

1
Birkan AYDIN

Dans mon cas, j'ai trouvé que le fichier mew added icon (image) n'était pas ajouté à mon projet. Il est résolu après avoir ajouté ces nouveaux fichiers image dans mon projet, pas seulement la copie de fichier.

1
Will

Supprimez la référence "WPFToolkit" de votre fichier cs.proj.

<Reference Include="WPFToolkit, Version=3.5.40128.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

Ça devrait faire l'affaire.

1
nostafict

Vous devez d’abord importer une image dans votre projet Explorateur de solutions - Tout afficher

enter image description here

puis faites un clic droit sur l'image et sélectionnez Inclure

enter image description here

Maintenant, utilisez End

1
soheil momeni

Dans mon cas, les fichiers existaient sur le disque mais n'étaient pas référencés dans le projet. Je les ai ajoutés au projet, mais l'erreur persistait malgré le rechargement de la solution et le redémarrage de Visual Studio.

J'ai changé les références à un fichier existant qui était déjà dans le projet et il fonctionnait bien (bien qu'avec le mauvais graphique). Je l'ai ensuite remise à la référence d'origine et tout s'est bien déroulé, mais avec la bonne image. Vraisemblablement, l’erreur était en train d’être cachée jusqu’à ce qu’elle soit supprimée du système.

1
Buzzwig

Essayez de définir Build Action of Property of Image file comme Resource.

0
Wei Song

Une exception se produisait dans le constructeur. La liaison de commande du bouton était incorrecte . Exemple: <Button Command="MyCommand" />--> incorrect .____<Button Command="{Binding MyCommand}" />--> droit

0
Kinjal Sheth

J'ai eu le même problème et pour ajouter une image à votre solution, vous devez le faire par le biais du wizzard. Dans l'explorateur de solutions -> cliquez avec le bouton droit de la souris sur le dossier approprié -> ajoutez l'élément existant ->, puis accédez à votre image. Cela a fonctionné pour moi. J'espère que cela vous aide ... Merci pour vos réponses. 

0
Elyas

Dans mon cas, j'ai eu cette erreur quand j'ai eu 

<Border Background="eeeeee">

au lieu de 

<Border Background="#eeeeee">

(notez le code #)

0
Josh

Pour améliorer user2125523:

Si vous avez ajouté l'image au projet et vérifié et vérifié que l'orthographe du fichier est correcte, essayez de renommer l'image pour refléter une image existante différente. Construire/exécuter, puis mettez votre nom de fichier image et compilez/exécutez à nouveau. 

Par exemple: Mon code original continuait à générer l'erreur OP sur LargeImage="/img/32/delete.order.png" même si ce fichier existait.

<telerik:RadRibbonButton Text="Object Properties" Size="Large"
    Name="PropertiesButton" IsTabStop="True"
    telerik:ScreenTip.Description="Get object properties" 
    Click="PropertiesButton_Click"
    LargeImage="/img/32/properties.png" 
    SmallImage="/img/16/properties.png" />
<telerik:RadRibbonButton Text="Reset Tab Order" Size="Large" 
    Name="ClearTabOrderButton" IsTabStop="True"
    telerik:ScreenTip.Description="Reset tab order of all fields"
    Click="ClearTabOrder_Click"
    LargeImage="/img/32/delete.order.png" 
    SmallImage="/img/16/delete.order.png" />

Donc, j'ai changé LargeImage="/img/32/delete.order.png" en LargeImage="/img/32/properties.png", j'ai lancé le programme et l'ai redéfini en "/img/32/delete.order.png". Finalement, l'erreur avait disparu. 

FYI VS2012.3 Win8.1Aperçu

0
Owen

J'ai trouvé "UpdateSourceTrigger = Pr" quelque part dans mon XAML.

Doit avoir eu lieu pendant l'édition.

La compilation s'est bien déroulée, aucune erreur alors.

La définition d'un point d'arrêt dans Application_DispatcherUnhandledException dans app.xaml.cs a révélé l'erreur.

Corrigé à "UpdateSourceTrigger = PropertyChanged" et le monde était à ce qu'il aurait dû être.

Je travaille sur Win 10 Pro, VS2017

0
Erik