ItemsControl이있는 UserControl이 있습니다. 이 ItemsControl은 객체 목록에 바인딩됩니다. 이러한 개체를 표시하려면 개체가 표시되는 방식을 결정하는 * DataTemplate *이 있어야합니다.동적으로 생성 된 컨트롤을 반복하고 특정 속성 가져 오기
TextBox 인 경우 Text 나 ComboBox 인 경우 SelectedItem과 같은 컨트롤의 현재 값을 검색 할 수 있기를 원합니다.
어떻게 이러한 동적으로 생성 된 컨트롤을 반복합니까? 컨트롤의 이름은 런타임 중에 생성되므로이를 알지 못합니다. 내가 컨트롤과 그들의 템플릿 속성에 대한 시각적 트리를 검색하는 외에 생각할 수있는 이유는 가장 간단한 아마도
예, 실제로 ItemsControl 소스를 List에 바인딩했습니다. 아직 ObservableCollection 권한이 있다고 생각합니까? ItemsControl 목록에서 UIElement를 어떻게 확인합니까? ItemsControl.Items는 나에게 목록 소스를 제공합니다 .. 그것은 나에게 ItemsControl에있는 컨트롤을주지 않습니다. – krebstar
먼저 ObservableCollection을 제안한 이유는 ObservableCollection이 INotifyPropertyChanged 인터페이스를 구현하므로 목록의 항목이 변경 될 때입니다. (제거/추가)하면 목록을 바인딩 할 요소를 업데이트합니다. 일반적으로 ItemsControl.datasource 나 심지어 ItemsControl.items (내 머리 꼭대기에는 확실하지 않습니다)를 요소 유형 중 하나로 캐스팅 할 수 있습니다. 그러나 바인딩을 설정하는 실제 목록 요소로 작업하는 것이 좋습니다. 이렇게하면 MVVM 디자인 패턴을 따르고보다 복잡한 응용 프로그램을 만들 때 훨씬 쉽게 작업 할 수 있습니다. –
흠 .. 그건 이해가된다. 그러나 지금까지 내가 가지고있는 것에 적응시키는 방법을 모르겠다. 기본적으로 내 컨트롤에 사용자 인터페이스를 표시하는 방법을 알려주는 객체 목록이 있습니다. 예를 들어 displayname 멤버가있는 객체와 표시 할 문자열 목록 (선택 사항)이 있습니다. 사용자 정의 컨트롤은 콤보 상자로 표시합니다. 이 객체에는 선택한 항목을 설정하는 필드가 없습니다. 만약 그렇다면 선택한 항목을 어떻게 묶을 수 있을지 모르겠다. : S Hoo boy 이것은 너무 혼란 스럽다 : S – krebstar