Как использовать вложенный класс в WPF XAML?
Я рефакторинг кода из образца:
-
24.129.21. Master Detail Binding
от C# / CSharp Учебник Привязка "Windows Presentation Foundation")
и после исключения класса навыки, с соответствующими изменениями в
в файл MainWindow.в XAML
<local:Team>
<local:Employee Name="Larry" Age="21">
<local:Employee.Skills>
<!-- local:Skills -->
<local:Skills>
на 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();
}
}
}
как следует Я меняю файл window1.XAML если переместить:
-
Skill
класса вEmployee
класс
в файл window1.код XAML.в CS?
вопросы
на основе того же кода:
Update (отвечая на комментарий 1st RV1987):
ответы tp создание экземпляра вложенный класс в XAML скажите, что это возможно, но неясно, как использовать:
-
ответ Людовик говорит, что это возможно, но содержит комментарий, что не ясно, как использовать.
Это вполне соответствует моему опыту и этому вопросу -
другое ответ townsean основано на цитировании из msdn:
"Ваш пользовательский класс не должен быть вложенным классом. Вложенные классы и "точка" в своем общие синтаксис использования среды CLR мешает другим функциям WPF и/или XAML, таким как вложенные свойства."а, в общие, и для "пользовательского класса", но в моем б код прилагается к этому вопросу есть десятки "точки" (типа
Employee.Skills
) и это не мой пользовательский класс, который вложен, но мой пользовательский класс имеет вложенный класс внутри.
Update2 (отвечая на комментарий-вопрос 2-го RV1987):
Да, я только что пробовал!--55-->+ подход, который не работает, но:
- XAML дает мне ошибки даже на отлично работающих элементах
- Я не пытался использовать рефлектор сам или найти какой-либо другой работоспособный подход или менее двусмысленную ссылку от Microsoft на него
1 ответов
к сожалению, то, что вы хотите сделать, невозможно в XAML (от MSDN):
пользовательский класс не должен быть вложенным классом. Вложенные классы и" точка " в их общем синтаксисе использования среды CLR мешают другим функциям WPF и/или XAML, таким как вложенные свойства.