ventanas ventana pasar nueva navegacion modal entre emergentes emergente datos crear abrir c# wpf xaml data-binding nested-class

c# - ventana - ¿Cómo usar la clase anidada en WPF XAML?



ventanas emergentes en wpf (1)

Desafortunadamente, lo que quieres hacer no es posible en XAML (desde MSDN ):

Su clase personalizada no debe ser una clase anidada. Las clases anidadas y el "punto" en su sintaxis de uso de CLR general interfieren con otras características de WPF y / o XAML, como las propiedades adjuntas.

Estoy refactorizando el código de la muestra:

Y después de excluir la clase de habilidades , con los cambios correspondientes en
en MainWindow.xaml

<local:Team> <local:Employee Name="Larry" Age="21"> <local:Employee.Skills> <!-- local:Skills --> <local:Skills>

en MainWindow1.xaml.cs :

using System.Collections.Generic; using System.Collections.ObjectModel; using System.Windows; namespace WpfApplication { public class Skill {//I''d like to exclude class Skill having moved it into class Employee as nested one public string Description { get; set; } } public class Employee { public string Name { get ; set; } public int Age { get; set; } public List<Skill> Skills { get; set; } public Employee() { Skills=new List<Skill>(); } /*class Skill { public string Description { get; set; } } */ } public class Team : ObservableCollection<Employee> { } public class Company { public string CompanyName { get ; set; } public Team Members { get ; set; } } public class Companies : ObservableCollection<Company> { } public partial class Window1 : Window { public Window1() { InitializeComponent(); } } }

¿Cómo debo cambiar Window1.XAML si debo moverlo?

  • Clase de Skill en clase de Employee

en Window1.xaml.cs?

Preguntas relacionadas

basado en el mismo código:

Actualización (respondiendo al comentario de 1st RV1987) :

Answers tp Crear una instancia de una clase anidada en XAML indica que es posible pero no está claro cómo usarlo:

  • La respuesta de Ludovic dice que es posible, pero contiene un comentario que no está claro cómo usarlo.
    Esto está bastante en línea con mi experiencia y esta pregunta
  • Otra respuesta de townsean se basa en la cita de msdn :
    "Su clase personalizada no debe ser una clase anidada. Las clases anidadas y el " punto " en su sintaxis de uso CLR general interfieren con otras características de WPF y / o XAML, como las propiedades adjuntas".

    Pero es en general , y para "su clase personalizada" pero en mi código concreto adjunto a esta pregunta hay docenas de "puntos" (como Employee.Skills ) y no es mi clase personalizada la que está anidada sino mi clase personalizada ha anidado clase dentro.

Update2 (respondiendo la pregunta-comentario de 2nd RV1987) :
Sí, acabo de probar ese enfoque + , que no funciona, pero:

  • XAML me da errores incluso en elementos perfectamente funcionales.
  • No he intentado usar el reflector por mi cuenta ni he encontrado ningún otro enfoque viable o una referencia menos ambigua de Microsoft en él.