none
_El nombre de tipo 'Datos' no existe en el tipo 'SL_013.Datos'_ RRS feed

  • Pregunta

  • Como puedo quitar el error

    Datos.Datos fuenteDatos = newDatos.Datos();

                fuenteDatos.Personas.Add(newDatos.Persona("Yeray", "Julian", 29, "Bilbao"));

                fuenteDatos.Personas.add(newDatos.Persona("Hilda","Marquez", 36,"bilbao"));

                fuenteDatos.Personas.add(newDatos.Persona("Hilda", "Marquez", 36, "bilbao"));

     

     

               

    this.DataContext = fuenteDatos;

              }

    martes, 2 de julio de 2013 10:45

Respuestas

  • Hola Javier

    Tienes definida la clase Datos? En ese ejemplo tienes dos clases: La clase Persona y la clase Datos. La clase Datos contiene la propiedad Personas de tipo List<Persona>:

    namespace SL_013.Datos
    {
        public class Datos : INotifyPropertyChanged
        {
            List<Persona> personas;
            public List<Persona> Personas 
            {
                get
                {
                    return personas;
                }
                set
                {
                    personas = value;
                    NotificarCambio("Personas");
                }
            }
    
            public Datos()
            {
                personas = new List<Persona>();
            }
    
            public event PropertyChangedEventHandler PropertyChanged;
    
            public void NotificarCambio(string NombrePropiedad)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(NombrePropiedad));
                }
            }
        }
    }

    La clase Persona contiene las propiedades de una persona:

    namespace SL_013.Datos
    {
        public class Persona
        {
            public string Nombre { get; set; }
    
            public string Apellidos { get; set; }
    
            public int Edad { get; set; }
    
            public string Direccion { get; set; }
    
            public Persona()
            {
            }
    
            public Persona(string nombre, string apellidos, int edad, string direccion)
            {
                Nombre = nombre;
                Apellidos = apellidos;
                Edad = edad;
                Direccion = direccion;
            }
        }
    }

    Por el error que comentas, parece que no has definido bien estas clases, o que te falta por definir la clase Datos.

    Espero que te sea de ayuda, un saludo!


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    • Marcado como respuesta Javier Ra jueves, 18 de julio de 2013 15:45
    miércoles, 3 de julio de 2013 6:56
    Moderador
  • Hola Javier.

    Lo que tienes que mover fuera de MainPage es la declaración de las clases, no de la variable.


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    • Marcado como respuesta Javier Ra jueves, 18 de julio de 2013 15:44
    viernes, 12 de julio de 2013 12:53
    Moderador

Todas las respuestas

  • Donde te está dando exactamente el error?

    que es Datos.Datos????

    a simple vista parece que Datos es una Clase y no un espacio de nombres, así que me da la impresión que te está "Chocando" el nombre de la clase con el espacio de nombres, prueba a cambiar el nombre a la clase.

    Saludos.

    martes, 2 de julio de 2013 12:16
  • Ahora lo tengo como clase pero me dice

    Error 1 No se puede encontrar el tipo o el nombre de espacio de nombres 'Datos' (¿falta una directiva using o una referencia de ensamblado?) 

    esto esta sacado el libro 7.5 Windows pone mango

    Datos.Datos fuenteDatos = newDatos.Datos();

                fuenteDatos.Personas.Add(newDatos.Persona("Yeray","Julian",29,"Bilbao"));

                fuenteDatos.Personas.Add(newDatos.Persona("Hilda", "Marquez", 36, "Bilbao"));

                fuenteDatos.Personas.Add(newDatos.Persona("Roberto", "Gonzalez", 15, "Bilbao"));

               

    this.DataContext = fuenteDatos;

            }

     

           

    publicclassPersona


            {

               

    publicstringNombre { get; set; }

               

    publicstringApellidos { get; set; }

               

    publicintEdad { get; set; }

               

    publicstringDireccion { get; set; }

               

    publicPersona()

                {

                }

               

    publicPersona(stringnombre, stringapellidos, intedad, stringdireccion)

                {

                    Nombre = nombre;

    Apellidos = apellidos;

                    Edad = edad;

                    Direccion = direccion;

     

                }

               

    List<Persona> personas;

               

    publicList<Persona> Personas

                {

                   

    get


                    {

                       

    returnpersonas;

     

                    }

                   

    set


                    {

                        personas =

    value;

                        NotificarCambio(

    "Personas");

                    }

                }

               

    privatevoidNotificarCambio(stringp)

                {

                   

    thrownewNotImplementedException();

                }

            }

        }

    }

    Gracias.

    martes, 2 de julio de 2013 15:57
  • Hola Javier

    Tienes definida la clase Datos? En ese ejemplo tienes dos clases: La clase Persona y la clase Datos. La clase Datos contiene la propiedad Personas de tipo List<Persona>:

    namespace SL_013.Datos
    {
        public class Datos : INotifyPropertyChanged
        {
            List<Persona> personas;
            public List<Persona> Personas 
            {
                get
                {
                    return personas;
                }
                set
                {
                    personas = value;
                    NotificarCambio("Personas");
                }
            }
    
            public Datos()
            {
                personas = new List<Persona>();
            }
    
            public event PropertyChangedEventHandler PropertyChanged;
    
            public void NotificarCambio(string NombrePropiedad)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(NombrePropiedad));
                }
            }
        }
    }

    La clase Persona contiene las propiedades de una persona:

    namespace SL_013.Datos
    {
        public class Persona
        {
            public string Nombre { get; set; }
    
            public string Apellidos { get; set; }
    
            public int Edad { get; set; }
    
            public string Direccion { get; set; }
    
            public Persona()
            {
            }
    
            public Persona(string nombre, string apellidos, int edad, string direccion)
            {
                Nombre = nombre;
                Apellidos = apellidos;
                Edad = edad;
                Direccion = direccion;
            }
        }
    }

    Por el error que comentas, parece que no has definido bien estas clases, o que te falta por definir la clase Datos.

    Espero que te sea de ayuda, un saludo!


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    • Marcado como respuesta Javier Ra jueves, 18 de julio de 2013 15:45
    miércoles, 3 de julio de 2013 6:56
    Moderador
  • Datos.Datos fuenteDatos = newDatos.Datos();

    el fallo me da en Datos el que esta subrayado.

     Lo demás no da fallo.

    Error 1 El nombre de tipo 'Datos' no existe en el tipo 'Sl_013.MainPage.Datos' 

    jueves, 4 de julio de 2013 8:59
  • Prueba a meterle el espacio de nombres completo es decir:

    SL_013.Datos.Datos fuenteDatos = new SL_013.Datos.Datos();

    En mi opinion para que el ejemplo no fuese tan lioso, cambiaría el espacio de nombres o la clase de nombre.

    Por otro lado, asegurate que tu clase Datos está creada correctamente.

    Según el comentario de Josue Yeray (public class Datos : INotifyPropertyChanged)

    Saludos.

    jueves, 4 de julio de 2013 10:56
  • Hola Javier.

    Si lees mi respuesta con detenimiento, veras que te pregunto si tienes la clase Datos definida, porque por el código que has puesto NO LA TIENES DEFINIDA. Y por supuesto, Visual Studio no se puede inventar una clase que no existe y te dice que el tipo Datos no existe. Y menos dentro de la clase MainPage....

    ¿Has descargado los ejemplos del libro y has contrastado lo que estás haciendo con lo que se explica?

    Un saludo


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    jueves, 4 de julio de 2013 11:10
    Moderador
  • Hola:

    Ahora el mismo el Datos que he puesto anteriormente subrayado no esta definido al definirlo la clase seria public.

    viernes, 5 de julio de 2013 17:12
  • Hola Javier.

    Si el tipo no está definido, ese es el problema. Debes definirlo como Public class Datos, tal y como te puse en el código anteriormente.

    Un saludo


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    domingo, 7 de julio de 2013 7:43
    Moderador
  • fuenteDatos.Personas.Add(newDatos.Persona("yeray", "julian", 29, "Bilbao"));

    pero al poner me señala Personas y también señala Persona que se supone que esta declarado como clase

    me sale que no contiene una definicion 'Personas' no se encontró el método de extensión 'Personas'

    miércoles, 10 de julio de 2013 13:37
  • Hola Javier

    Para que este mas ordenado el código que muestras deberías usar la etiqueta insertar bloque de codigo.

    Saludos!!!


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    jueves, 11 de julio de 2013 5:11
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using Microsoft.Phone.Controls;
    using System.ComponentModel;
    using System.Windows.Data;
    
    namespace SL_013
    {
        public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            public MainPage()
            {
                InitializeComponent();
    
    
                Datos.Datos fuenteDatos = new Datos.Datos();
    
                fuenteDatos.Personas.Add(new Datos.Persona("yeray", "julian", 29, "Bilbao"));
                fuenteDatos.Personas.Add(new Datos.Persona("Hilda", "Marquez", 36, "Bilbao"));
                fuenteDatos.personas.Add(new Datos.Persona("Roberto", "Gonzalez", 15, "Bilbao"));
                fuenteDatos.Personas.Add(new Datos.Persona("laura", "Julian", 4, "Bilbao"));
    
                this.DataContext = fuenteDatos;
    
            }
    
    
    
            public class Datos : INotifyPropertyChanged
            {
                List<Persona> personas;
                public List<Persona> Personas
                {
                    get
                    {
                        return personas;
                    }
                    set
                    {
                        personas = value;
                        NotificarCambio("Personas");
                    }
                }
    
                public Datos()
                {
                    personas = new List<Persona>();
                }
    
                public event PropertyChangedEventHandler PropertyChanged;
    
                public void NotificarCambio(string Personas)
                {
                    if (PropertyChanged != null)
                    {
                        PropertyChanged(this, new PropertyChangedEventArgs(Personas));
                    }
                }
    
    
                
    
                public class Persona
                {
                    public string Nombre { get; set; }
    
                    public string Apellidos { get; set; }
    
                    public int Edad { get; set; }
    
                    public string Direccion { get; set; }
    
                    public Persona()
                    {
                    }
    
                    public Persona(string nombre, string apellidos, int edad, string direccion)
                    {
                        Nombre = nombre;
                        Apellidos = apellidos;
                        Edad = edad;
                        Direccion = direccion;
                    }
    
    
                }
    
    
            }
    
        }
    
    Datos.Datos fuenteDatos = new Datos.Datos(); el segundo Datos que esta despues del punto me sale en rojo al definirlo como clase me marca Personas en rojo como seria apra definirlo.
    jueves, 11 de julio de 2013 7:30
  • Hola!

    A ver, el error está muy claro. Si te das cuenta, has definido la clase Datos y la clase Persona, dentro de la clase MainPage!! Esto no es correcto. puedes definir la clase Datos y Persona dentro del namespace SL_013, pero no dentro de la clase MainPage. Saca la definición de Datos y Persona de la clase MainPage al namespace SL_013 y luego en vez de hacer Datos.Datos haz SL_013.Datos y te funcionará correctamente.

    En el ejemplo original del libro, la clase Datos y la clase Personas están en un namespace llamado Datos.

    Un saludo!


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    viernes, 12 de julio de 2013 6:56
    Moderador
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using Microsoft.Phone.Controls;
    using System.ComponentModel;
    using System.Windows.Data;
    
    namespace SL_013
    
    
    {
                
               
     SL_013.Datos fuenteDatos = new SL_013.Datos();
    
               
    
    
        public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
    
            
    
                
            public MainPage()
            {
                InitializeComponent();
    
                fuenteDatos.Personas.Add(new Datos.Persona("yeray", "julian", 29, "Bilbao"));
                fuenteDatos.Personas.Add(new Datos.Persona("Hilda", "Marquez", 36, "Bilbao"));
                fuenteDatos.personas.Add(new Datos.Persona("Roberto", "Gonzalez", 15, "Bilbao"));
                fuenteDatos.Personas.Add(new Datos.Persona("laura", "Julian", 4, "Bilbao"));
    
                 this.DataContext = fuenteDatos;
            }
    
    
    
            public class Datos : INotifyPropertyChanged
            {
                List<Persona> personas;
                public List<Persona> Personas
                {
                    get
                    {
                        return personas;
                    }
                    set
                    {
                        personas = value;
                        NotificarCambio("Personas");
                    }
                }
    
                public Datos()
                {
                    personas = new List<Persona>();
                }
    
                public event PropertyChangedEventHandler PropertyChanged;
    
                public void NotificarCambio(string Personas)
                {
                    if (PropertyChanged != null)
                    {
                        PropertyChanged(this, new PropertyChangedEventArgs(Personas));
                    }
                }
    
    
                
    
                public class Persona
                {
                    public string Nombre { get; set; }
    
                    public string Apellidos { get; set; }
    
                    public int Edad { get; set; }
    
                    public string Direccion { get; set; }
    
                    public Persona()
                    {
                    }
    
                    public Persona(string nombre, string apellidos, int edad, string direccion)
                    {
                        Nombre = nombre;
                        Apellidos = apellidos;
                        Edad = edad;
                        Direccion = direccion;
                    }
    
    
                }
    
    
            }
    
        }
    }

     Hola:

    si pongo SL_013.Datos fuenteDatos = new SL_013.Datos();

    me indica varios errores.

    viernes, 12 de julio de 2013 12:48
  • Hola Javier.

    Lo que tienes que mover fuera de MainPage es la declaración de las clases, no de la variable.


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    • Marcado como respuesta Javier Ra jueves, 18 de julio de 2013 15:44
    viernes, 12 de julio de 2013 12:53
    Moderador
  • ya funciona pero no se ven la lista .
    viernes, 12 de julio de 2013 18:37
  • Funciona pero no me sale los datos en la pantalla.
    miércoles, 17 de julio de 2013 11:05