Как запустить простейший код, иллюстрирующий привязку объектов объекта Master-Detail (составной список) в WPF?

Я пытаюсь запустить (в C # 4.0, Visual Studio 2010) код из

  • Не удалось отобразить список как один из столбцов моего представления с помощью ItemsControl и StackPanel?

добавив экземпляр myOrders в MainWindow.xaml.cs VS2010 проекта приложения WPF, но я попал в XAML

Не удается разрешить символ myOrders из-за неизвестного контекста данных

при указании в MainWindows.xaml мыши на myOrders в строке:

ItemsSource="{Binding myOrders}" 

Каким будет полный скрипт XAML для запуска приложения WPF в этом случае?

Обновить:

Я удалил свой код, поскольку он избыточен для предоставления ответов и комментариев.
Просто отметим, что меня интересовала простейшая иллюстрация запуска-реализации привязки данных:

  • составные (иерархические или многомерные / зубчатые массивы или списки) Список объектов (созданных в C #, но не в XAML)
  • имитируя отношения между мастером и деталями, TreeView

которые я не мог найти в Интернете.

Код в руководствах, пошаговых инструкциях или примерах, которые я мог найти, либо не компилируется, либо слишком раздувается из-за осложнений, размывающих концепции и, соответственно, понимание.

Т.е. я предпочитаю исчезнувший ответ с более простым кодом , хотя я не могу повышать или отмечать его как правильно, так как он не мой.

Прежде всего myOrders должен быть публичной собственностью. его нельзя увидеть, даже если это общедоступная переменная, во-вторых, чтобы представление (XAML) было известно о том, что происходит в коде, который вам нужен, чтобы установить DataContext = this; в конструкторе windows

Установите свойство, подобное этому: public List myOrder {get;set;}

Если вам нужно обновить представление из кода позади, вам необходимо реализовать интерфейс INotifyPropertyChanged . он отвечает за выполнение задания просмотра обновлений. Вот небольшой учебник из MSDN .

Последняя вещь (по моему опыту) вы должны пойти с свойством типа ObservableCollection вместо List .

XAML:

                            

Код позади:

  ///  /// Interaction logic for MainWindow.xaml ///  public partial class MainWindow : Window, INotifyPropertyChanged { public ObservableCollection MyOrders { get { return _myOrders; } set { _myOrders = value; OnPropertyChanged("MyOrders"); } } Order order1 = new Order { OrderName = "Order1", PartsList = new List() { new Parts {PartName = "Part11", PartQuantity = 11}, new Parts {PartName = "Part12", PartQuantity = 12} } }; private ObservableCollection _myOrders; public MainWindow() { InitializeComponent(); MyOrders = new ObservableCollection(); MyOrders.Add(order1); DataContext = this; } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); } } public class Order { public string OrderName { get; set; } public List PartsList { get; set; } } public class Parts { public string PartName { get; set; } public double PartQuantity { get; set; } } } 

Более простой ответ:
Это смешно, но я не вижу в ответе HichemC исправления своего предпоследнего издания кода C #, работающего с тем же XAML, без каких-либо вздутий:

  • ObservableCollection
  • OnPropertyChanged ()
  • INotifyPropertyChanged
  • PropertyChangedEventHandler

Что этот, более простой, код работает для меня:

 public partial class MainWindow : Window { public List myOrders { get; set; } Order order1 = new Order { OrderName = "Order1", PartsList = new List() { new Parts {PartName = "Part11", PartQuantity = 11}, new Parts {PartName = "Part12", PartQuantity = 12} } }; Order order2 = new Order { OrderName = "Order2", PartsList = new List() { new Parts {PartName = "Part21", PartQuantity = 21}, new Parts {PartName = "Part22", PartQuantity = 22}, new Parts {PartName = "Part23", PartQuantity = 23} } }; public MainWindow() { InitializeComponent(); myOrders = new List(); myOrders.Add(order1); myOrders.Add(order2); DataContext = this; } } public class Order { public string OrderName { get; set; } public List PartsList { get; set; } } public class Parts { public string PartName { get; set; } public double PartQuantity { get; set; } } } 

Компонент Master-Detail Объект списка Объект привязки в WPF App-Simplest Возможная реализация