Элементы управления доступом WPF в шаблоне данных ListBox - PullRequest
1 голос
/ 23 апреля 2009

Я создаю приложение для управления заказами WPF, и я столкнулся с ситуацией, с которой я не знаю, как справиться.

Я хочу повторно связать список запросов заказов на покупку для каждого заказа, но я хочу делать это только в том случае, если в приложении отображается панель запросов заказов на покупку (они дважды щелкают по заказу, чтобы отобразить список заказов на покупку). Запросы). У меня проблема в том, что запросы на заказ на покупку являются списком внутри каждого элемента списка в списке «Заказ», и я не могу найти способ обойти элементы управления в элементах списка (я могу перебирать только реальные объекты, например, OrderInfo).

То, что я хотел бы сделать, это

OrderListBox.FindName("PurchaseOrderListBox")

Пример CRM с 2 заказами, показывающими запросы на покупку, и 1 заказом, не показывающими альтернативный текст http://www.readyflowers.co.uk/images/crm-datatemplate.png

Результат, которого я хочу достичь альтернативный текст http://www.readyflowers.co.uk/images/crm-datatemplate-saved.png

1 Ответ

1 голос
/ 23 апреля 2009

Я не уверен, что понимаю вашу проблему ....

Но кажется, что вы пытаетесь взломать иерархию пользовательского интерфейса, чтобы найти что-то (а-ля WinForms) - это все равно что плыть против течения в WPF. Это заставит тебя очень быстро устать ..

Посмотрите на статьи по шаблону ViewModel. Один из них, который я прочитал, - один за Дэн Кревье . Основная идея состоит в том, чтобы иметь объект Model для пользовательского интерфейса - пользовательский интерфейс (данные) привязывается к свойствам, предоставляемым ViewModel. Теперь вся ваша логика, связанная с пользовательским интерфейсом, может перейти в ViewModel, которая уведомляется посредством уведомлений propertyChanged о любом изменении состояния сеанса. Поэтому, если поле изменяется, ViewModel получает уведомление. ViewModel обновляет соответствующие свойства, а пользовательский интерфейс обновляется соответствующим образом.

В этом случае ViewModel.OrderInfo.Find_PO_with_X(searchCriteria) поможет вам добраться до нужного объекта. Если найдено, вы говорите ViewModel.ShowGreenLight = true и элемент управления пользовательского интерфейса, связанный с этим свойством, станет зеленым.

НТН

...