MVVM 可能会也可能不会。MVVM 您将 ViewModel 设置为您的代码,然后创建一个资源库来告诉视图它与视图模型相关。你所做的只是一个绑定。如果您在“MainWindow”后面的代码中执行所有代码,那么这几乎是违反 MVVM 的。
您还可以创建一些视图,然后在不同的 DOCKING PANELS 中显示它们。我只是在开始使用 MVVM 之前才这样做,并且一次只显示一个,但我认为您可以更轻松地做到这一点。
XAML:
<DockPanel x:Name="MainDock" LastChildFill="True">
<StackPanel DockPanel.Dock="Top">
<StackPanel.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="#FF759FCB" Offset="1" />
</LinearGradientBrush>
</StackPanel.Background>
<Menu Background="Transparent" >
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1"/>
</ItemsPanelTemplate>
</Menu.ItemsPanel>
<MenuItem Grid.Column="0" x:Name="mnuBasic" Header="Basic Batch" Click="mnuBasic_Click" />
<MenuItem Grid.Column="1" x:Name="mnuImages" Header="Image List" Click="mnuFENSImages_Click" />
<MenuItem Grid.Column="2" x:Name="mnuReRender" Header="ReRender Batch" Click="mnuReRender_Click"/>
</Menu>
</StackPanel>
<DockPanel x:Name="dockcontent" DockPanel.Dock="Right" />
</DockPanel>
然后,我将使用单击菜单项的数据填充名为“dockcontent”的部分。填充对接的代码示例:
Exporter exp = new Exporter(); //constructor args if needed, this is a user control
dockcontent.Children.Clear(); // clear the dockpanel so nothing already exists
dockcontent.Children.Add(exp); // populate the dock with my user control
我认为您可以使用多种方法来制作多个图像。只要您的对象是正确上下文中的视图,您就可以直接在 XAML 中执行我期望的绑定。
请记住,后面的代码过多,基本上是根本不遵循 MVVM 的。由于 MVVM 的目的是将您的演示文稿与您的代码隔离开来,而不是将它们放在一起。