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:
- 24.129.21. Encuadernación de detalle principal
de C # / CSharp Tutorial »Windows Presentation Foundation» Encuadernación)
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 deEmployee
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.