2011-03-04 7 views
0

항목 컨트롤에서 항목 패널 템플릿으로 사용하기위한 사용자 지정 패널 컨트롤이 있습니다.항목 컨트롤 데이터 소스의 항목 속성 업데이트, 항목 컨트롤의 itempanel 템플릿 인스턴스에서 리플렉션되지 않음

itemscontrol은 데이터 소스에 데이터 바인딩됩니다.

이 데이터 소스는 목록이고 목록의 각 항목은 사용자 정의 비즈니스 객체입니다. 응용 프로그램에서 사용자는 목록에있는 각 비즈니스 개체를 업데이트 할 수 있으며 예상대로 변경된 속성에 대한 알림을 발생시킵니다.

지금 내 문제는 여기에 있습니다 :

사용자가 항목에 바인딩을 제어하는 ​​데이터 소스의 객체의 속성 (목록에서 아이튠즈 뮤직 스토어)를 업데이트, 내 사용자 지정 패널 컨트롤이 있음을 얻을 수 없습니다 알림으로 인해 항목 컨트롤이 해당보기에서 업데이트 된 항목으로 업데이트되지 않습니다.

List 대신 ObservableCollection을 사용해 보았습니다. 문제는 여전히 동일합니다.

나는 여기에 뭔가 근본을 놓치고 있어야합니다 ... 포인터, 답변 또는 솔루션으로 도와주세요.

+1

목록 게시 항목 코드 및 ItemsControl XAML – Snowbear

답변

0

컬렉션의 변경 알림은 약간 까다 롭습니다. 제품 모음이 있다고 가정 해보십시오. 당신은 세 가지 다른 장소입니다 변경 알림을 구현할 수 있습니다. 컬렉션 자체

  • 변경 알림 (class Product에서 INotifyPropertyChanged을 구현) 제품 클래스

    1. 변경 통지 (즉, 사용 ObservableCollection에) 컬렉션을 보유하고있는 클래스의
    2. 변경 알림, 즉, 컬렉션이 포함 된 클래스에서 INotifyPropertyChanged를 구현합니다. (대개 MVVM에서 ViewModel이됩니다.)

    이러한 트리 방식은 동일하지 않으며 각각 다른 상황입니다.

    당신은 즉, 당신이 Products[0].Name = "New Product"; 다음 # 1과 같은 일을하는 경우 것이 바로 하나입니다 (등록 제품의 변경을 원하는 경우의 컬렉션이 ObservableCollection<Product> Products {get;set;} 이라고 가정 해 봅시다.

    당신이 Products.Add(new Product(...))을하고 싶은 경우 다음 # 2는 바로 하나입니다.

    당신이 Products = new ObservableCollection<Product>() 다음 # 3가 올바른 하나입니다해야합니다. 이것은 내가 컬렉션을 변경,하지만 을 만드는, 그래서 ObservableCollection에이 아니에요 때문에 특히 까다 롭습니다 도움이되지 않습니다 - 포함 된 클래스에서 INPC 구현해야합니다.

  • +0

    비즈니스 개체가 INotifyPropertyChanged 인터페이스를 구현하고 있습니다. – WPFLove

    +0

    다음으로 @ snowbear 님의 요청에 참여합니다 - 관련 코드 표시 –