Как настроить заголовок / строки в WPF / Silverlight - PullRequest
1 голос
/ 04 июня 2009

Есть ли у вас рекомендации по настройке форм заголовка / строк (также называемых заголовком / подробностями) в WPF или Silverlight? Предпочтительно использовать шаблон проектирования Mode-View-ViewModel, чтобы соответствовать остальной части моего приложения.

Примером было бы, если бы у меня была сетка, в которой отображались все SalesOrders в базе данных, а под ней - сетка, в которой отображались все SalesOrderDetails (отдельные строки для заказа на продажу ... каждый проданный товар) для выбранного заказ клиента в верхней сетке.

Я понимаю, что мог бы сделать это в файле кода для события SelectionChanged в Grid, но я бы предпочел декларативный способ сделать это ... во всем коде XAML и ViewModel. Возможно ли это?

Спасибо, Рой

1 Ответ

2 голосов
/ 05 июня 2009

Заголовок / Линии для меня очень похож на шаблон Master - Detail. Реализовать что-то подобное с помощью MVVM довольно просто.

Если бы нам нужно было создать структуру, в которой у нас были бы MasterViewModel и DetailViewModel, то в нашей MasterViewModel нам просто понадобилось бы свойство для представления нашего списка деталей и текущей детали. В представлении мы можем связать ItemSource списка с коллекцией Details и привязать SelectedItem к свойству CurrentDetail. Затем у нас может быть отдельное представление, как DataTemplate или UserControl, которое представляет CurrentDetail и отображает наши значения в подробной таблице.

Есть также несколько хороших ресурсов по реализации шаблона Master Detail XAML.

У Bea Stollnitz есть два замечательных примера использования XML для источников данных: Здесь и Здесь .

Существует MSDN-видео о реализации шаблона в WPF. (Видео находится в VB, но код можно загрузить в C #).

В этом форумах MSDN обсуждение Джонни К. демонстрирует простую настройку Master-Detail с использованием MVVM.

Множество примеров Карла Шифлетта также заканчивают демонстрацией шаблона Master-Detail, хотя код обычно находится в VB (однако некоторые примеры поставляются как с C #, так и с кодом VB.)

...