내가 무엇을 가지고 :는목록 개체 바인딩 - 목록 항목 컨트롤 내에서 모델 목록을 변경
나는 모델 객체가 ObservableCollection
에 JobTask
's의 목록을 보유하고 Job
라는이 -의이 taskList
를 부르 자 . 내가 ItemsControl
- (System.Windows.Controls.ItemsControl) taskList
에 바인딩되어있어 표시합니다. ItemsControl.Template
은 DataTemplate
을 사용자 정의로 설정하여 표시됩니다. UserControl
-이 작업을 jobTask와 관련된 UIControls가있는 JobTaskDisplayPanel
이라고합니다. 제목, 설명, iscomplete 등이 있습니다.이 설정은 현재 작동하고 있으며 ItemsControl 내에 바운드 정보가있는 JobTaskDisplayPanel
의 목록을 표시합니다.
샘플 코드 :
ItemsControl에 XAML :이 바인딩 방법
<ItemsControl ItemsSource="{Binding}" Name="jobsTaskList">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ucs:JobTaskDisplayPanel Margin="4"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
(나는 코드에서 바인딩) :
jobsTaskList.ItemsSource = currentJob.taskList;
내가 원하는 무엇 :
JobTaskDisplayPanel
의 각각에서 taskList
(모델 목록)을 변경하는 방법을 알고 싶습니다. 특히 JobTaskDisplayPanel
의 각 부분에 '삭제'버튼을 넣고 싶습니다. 부모의 taskList
에서 JobTask
을 삭제하여 응용 프로그램 모델에서 제거하십시오.
예, 부모 참조 방법을 사용했습니다. 그것은 일을하는 아주 더러운 방법처럼 느껴집니다. 이 상황을 개선하기위한 첫 번째 아이디어는 부모 UserControl의 코드 숨김 메소드에 바인딩하거나 상위 DataContext에서 메소드를 더 잘 호출 할 수있는 능력을 갖는 것입니다. – user989056
@ user989056 'JobTask'는 그것이'Job '이 무엇인지를 알기 때문에 Parent 속성에 문제가없는 것을 볼 수 있습니다. 부모님이 UI를 탐색하거나 해킹하는 것처럼 들리므로 원한다면 아마'Job'과 같은 것으로 이름을 바꿀 수 있습니다. – Rachel