2009-04-23 4 views
1

저는 WPF 주문 관리자 앱을 만들고 있는데 어떻게 처리해야할지 모르겠습니다.ListBox의 DataTemplate에서 WPF 액세스 컨트롤

각 주문에 대한 구매 주문 요청 목록을 다시 바인딩하고 싶지만 구매 주문 요청 패널이 앱에 표시되어있는 경우에만 수행하고 싶습니다 (구매 주문을 표시하기 위해 주문을 두 번 클릭합니다). 주문 요청). 내가 가진 문제는 구매 주문서 요청은 주문 목록 상자의 각 목록 항목 안에있는 목록 상자이며 목록 항목의 컨트롤을 트래버스하는 방법을 찾을 수 없다는 것입니다 (실제 개체 (예 : OrderInfo)에만 반복 가능). 내가하고 싶은 무엇

OrderListBox.FindName("PurchaseOrderListBox") 

구매 주문 요청을 보여주는이 개 주문과 내가 원하는 어떤 alt text http://www.readyflowers.co.uk/images/crm-datatemplate.png

결과를 표시되지 않는 한 순서와 CRM의 예입니다 달성 alt text http://www.readyflowers.co.uk/images/crm-datatemplate-saved.png

답변

1

잘 모르겠습니다. 귀하의 문제 ....

하지만 UI 계층을 통해 뭔가 (ala WinForms)를 찾으려고 노력하는 것처럼 느껴집니다. 이것은 WPF의 조수에 맞서 수영하는 것과 같습니다. 그것은 당신을 진짜 빨리 피곤하게 만들 것입니다.

ViewModel 패턴에 대한 기사를 둘러보십시오. 내가 읽은 책 중 하나는 Dan Crevier입니다. 기본 아이디어는 UI에 대한 Model 객체를 갖는 것입니다. UI (데이터)는 ViewModel에 의해 노출 된 속성에 바인딩됩니다. 이제 모든 UI 관련 로직이 ViewModel으로 들어갈 수 있습니다. ViewModel은 세션 상태의 변경 사항에 대한 propertyChanged 알림을 통해 통지됩니다. 따라서 필드가 변경되면 ViewModel에 알림이 전달됩니다. ViewModel은 관련 속성을 업데이트하므로 이에 따라 UI가 새로 고쳐집니다.

이 경우 ViewModel.OrderInfo.Find_PO_with_X(searchCriteria)은 올바른 개체를 얻을 수 있도록 도와줍니다. 발견되면 ViewModel.ShowGreenLight = true라고 말하면이 속성에 바인딩 된 UI 컨트롤이 녹색으로 바뀝니다.

HTH