none
Visual studio express 2013 "La référence d'objet n'est pas définie à une instance d'un objet"

    Question

  • J'ai une erreur après la génération dans mon code xaml du MainWindow


    <Window x:Class="RandoGPX.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:tab="clr-namespace:ScrollableTabControl;assembly=ScrollableTabControl"
            xmlns:dc="clr-namespace:GestionFichiersGPX;assembly=GestionFichiersGPX" 

    ....

            <tab:ScrollableTabControl Grid.Row="1" Name="ongletGPX" SelectionChanged="OngletGPX_SelectionChanged"                                  
                                      HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
                <TabControl.ItemTemplate >
                    <DataTemplate DataType="{x:Type dc:UnFichierGPX}">
                        <StackPanel Orientation="Horizontal" Margin="0,-6,0,0">
                            <CheckBox Height="14" ToolTip="Affiche le tracé du circuit GPX" IsChecked="{Binding bAfficheTraceGPX}"/>
                            <Label Content="{Binding NomCourtFichierGPX}" />
                        </StackPanel>




    Lors de la saisie il me propose bien "UnFichierGPX"


    Le programme fonctionne bien la variable bAfficheTraceGPX est bien transmise dans tous les CheckBox 


    Cela fonctionne (je n'ai pas d'erreur) dans un xaml qui est dans le namespace GestionFichierGPX

    mercredi 22 juin 2016 22:23

Réponses

  • Merci pour votre analyse.

    J'ai fais d'autres essais en changeant l'appel d'une class "ScrollableTabControl" qui permet d'avoir deux flèches sur le TabControl si l'on est plus large que la fenêtre par le TabControl classique.

    Cela fonctionne, je n'ai pas d'erreur.

     

    Le Changement :

            <!--
            <tab:ScrollableTabControl Grid.Row="1" Name="ongletGPX" SelectionChanged="OngletGPX_SelectionChanged"                                  
                                      HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
               -->
            <TabControl Grid.Row="1" Name="ongletGPX" SelectionChanged="OngletGPX_SelectionChanged"                                  
                                      HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
                <TabControl.ItemTemplate >
                    <DataTemplate DataType="{x:Type dc:UnFichierGPX}">

    Entête du fichier xaml

    <Window x:Class="RandoGPX.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:dc="clr-namespace:GestionFichiersGPX;assembly=GestionFichiersGPX"
            xmlns:tab="clr-namespace:ScrollableTabControl;assembly=ScrollableTabControl"

    jeudi 23 juin 2016 17:08

Toutes les réponses

  • Vous voulez dire qu'à l'exécution ca marche bien mais en mode design, vous avez une erreur ?

    Dans ce cas, c'est peut être dans le code qui est exécuté en mode design (connection à une base de données ?)


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    jeudi 23 juin 2016 12:03
  • Ça marche à l'exécution en cliquant sur le bouton démarrer après la compilation.

    Si je suis en édition sur un fichier autre que "MainWindow.xaml", je n'ai pas d'erreur après la compilation.

    Pendant l'exécution si je visualise le fichier "MainWindow.xaml" l'erreur "La référence d'odjet n'est pas définie à une instance d'un objet" apparaît.

    Après l'exécution, si je change :

    <DataTemplate DataType="{x:Type dc:UnFichierGPX}">

    par 

    <DataTemplate DataType="{x:Type dc:DossierGPX}">

    l'erreur disparaît.

    puis retour à

    <DataTemplate DataType="{x:Type dc:UnFichierGPX}">

    l'erreur ne revient pas 

    Dans la référence à "GestionFichierGPX", je fais une copie local pour avoir toutes les DLL dans le dossier d'exécution.

    jeudi 23 juin 2016 15:52
  • Clairement un pb de Designer, pas de votre code.

    Regardez si vous avez un constructeur par défaut (il n'utilise que celui là en mode Design).

    Après dans votre code, vous pouvez tester si vous êtes en mode design ou pas et agir en fonction.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    jeudi 23 juin 2016 15:54
  • Merci pour votre analyse.

    J'ai fais d'autres essais en changeant l'appel d'une class "ScrollableTabControl" qui permet d'avoir deux flèches sur le TabControl si l'on est plus large que la fenêtre par le TabControl classique.

    Cela fonctionne, je n'ai pas d'erreur.

     

    Le Changement :

            <!--
            <tab:ScrollableTabControl Grid.Row="1" Name="ongletGPX" SelectionChanged="OngletGPX_SelectionChanged"                                  
                                      HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
               -->
            <TabControl Grid.Row="1" Name="ongletGPX" SelectionChanged="OngletGPX_SelectionChanged"                                  
                                      HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
                <TabControl.ItemTemplate >
                    <DataTemplate DataType="{x:Type dc:UnFichierGPX}">

    Entête du fichier xaml

    <Window x:Class="RandoGPX.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:dc="clr-namespace:GestionFichiersGPX;assembly=GestionFichiersGPX"
            xmlns:tab="clr-namespace:ScrollableTabControl;assembly=ScrollableTabControl"

    jeudi 23 juin 2016 17:08