Я новичок в WPF am и переносит приложение из VC++ 6.0/MFC в C#/WPF (VS2013). Большая часть моей разработки окон была в VC++/MFC. Я пытаюсь придерживаться шаблона MVVM и пишу несколько доказательств концептуальных приложений, чтобы мои ноги были влажными. До сих пор у меня есть одна точка.WPF Изменение Datacontexts и представлений в том же окне
Когда мое приложение запустится, оно представит древовидный вид клиентов и счетов. У меня это хорошо работает с использованием простого иерархического шаблона данных с привязкой каждого уровня к моему локальному типу данных (модель просмотра). Я хочу, чтобы это произошло, когда выбран законопроект (прямо сейчас у меня есть кнопка, чтобы нажать на шаблон счета). Я хочу, чтобы древовидное изображение было заменено подробным представлением счета (я не хочу, чтобы диалог появлялся вверх).
Xaml для этого:
<DockPanel>
<TreeView x:Name="trvGroups" ItemsSource="{Binding LBGroups}" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling">
<TreeView.ItemContainerStyle>
<!--
This Style binds a TreeViewItem to a LBtreeViewItemViewModel
-->
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
</Style>
</TreeView.ItemContainerStyle>
<TreeView.Resources>
<HierarchicalDataTemplate
DataType="{x:Type local:GroupViewModel}"
ItemsSource="{Binding Children}"
>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding GroupName}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate
DataType="{x:Type local:BillViewModel}"
ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding BillName}" />
<Button Command="{Binding Path=BillEditCommand}">Edit</Button>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</DockPanel>
Сейчас у меня больше вопросов, чем что-либо. Должен ли я определять каждое представление как пользовательский элемент управления и помещать его в window.resources? Я использую шаблоны данных? Я предполагаю, что я изменил бы контекст данных, чтобы указать на модель просмотра подробных счетов. Каков наилучший способ сделать это?
Моя цель, придерживаться MVVM, как я понимаю, состоит в том, чтобы не иметь ничего в коде (или как можно меньше).
Я ищу больше для указателей, чтобы начать меня по правильному пути, когда я исследую. На данный момент я немного одурманен.
Заранее спасибо.
Каждый вид должен быть 'UserControl' (или' Window') и будет иметь свой собственный файл XAML и соответствующий (в основном пустой) код позади файл. Вы не определяете представления в 'Windows.Resources'. Однако вы можете вставить 'UserControl' в любом месте, где вы можете вставить стандартные элементы управления, и вы можете показать« Окно ». –
Бизнес-логика входит в модель представления. Пользовательский интерфейс затрагивает код. MVVM! = No codebehind. – Will
прочитал о сценариях мастера/подробностей в MVVM –