Что у меня есть:объекта списка Binding - изменение списка модели из управления элементом списка
У меня есть объект Модели называется Job
который содержит список JobTask
-й в ObservableCollection
- давайте назовем это taskList
, Я показываю Job
, имея ItemsControl
- (System.Windows.Controls.ItemsControl), у которого есть ItemsSource
, связанный с taskList
. Это ItemsControl.Template
отображается, если у него DataTemplate
настроено на заказ UserControl
- назовем это JobTaskDisplayPanel
, у которого есть UIControls, относящийся к jobTask, например. название, описание, iscomplete и т. д. Эта настройка в настоящее время работает, и она отображает список JobTaskDisplayPanel
с связанной информацией в ItemsControl.
код Пример:
ItemsControl XAML:
<ItemsControl ItemsSource="{Binding}" Name="jobsTaskList">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ucs:JobTaskDisplayPanel Margin="4"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Как я связываю с этим (я привязать к нему из кода):
jobsTaskList.ItemsSource = currentJob.taskList;
Что я хочу:
Я хотел бы знать, как внести изменения в список taskList
(список моделей) от каждого отдельного JobTaskDisplayPanel
, в частности, я хотел бы поместить кнопку «Удалить» в каждом из JobTaskDisplayPanel
, который при нажатии будет удалите JobTask
из его родительского taskList
, тем самым удалив его из приложения Model.
Да, я сделал это методом родительской ссылки. Это похоже на очень грязный способ делать что-то. Моей первой идеей улучшения для этой ситуации было бы иметь возможность привязываться к методу «code-behind» родительского UserControl или даже лучше иметь возможность вызывать методы в DataContext родителя. – user989056
@ user989056 Для меня имеет смысл, что 'JobTask' будет знать, к какому' Job' принадлежит, поэтому я не вижу ничего плохого в свойстве Parent. Вы могли бы также переименовать, вероятно, что-то вроде 'Job', если хотите, поскольку Parent заставляет его звучать как ваш навигационный интерфейс или делать что-то хакерское. – Rachel