日期:2014-05-18  浏览次数:20967 次

详解“MVVM”模式实例,以及对应疑问
1.View

  <UserControl x:Class="MultiChartDemo.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"
xmlns:local="clr-namespace:MultiChartDemo"

问题一:“MultiChartDemo”命名空间的引入,是不是使该“命名空间”下所有的类都可以看得见,“MainPage”也只是其中一个子类??? 在前台“XAML”中也可以引用后台“.cs”中的类,这样做是不是浪费资源???

xmlns:vc="clr-namespace:Visifire.Charts;assembly=SLVisifire.Charts">
<UserControl.DataContext >
  <local:MainPageViewModel />

</UserControl.DataContext>

问题二:“UserControl.DataContext”就是关联“View”和“ViewModel”之间的桥梁对吧??? 这样“ViewModel”中的“实体集数据”就可以绑定到“View”了对吧??? 但“增、删、改、查”这些事件应该怎样绑定呢,只是知道使用“Command”???绑定这些“Command”事件,是不是比“控件自带事件”消耗资源???

  <UserControl.Resources >
  <local:SeriesTemplateSelector x:Key="chartTemplateSelector">

问题三:“SeriesTemplateSelector”是一个“.xaml.cs”后台类,为什么可以被前端“xaml”使用呢??? 怎么回事???

  <local:SeriesTemplateSelector.SalesTemplate>
  <DataTemplate >
  <vc:DataSeries RenderAs="Line" LegendText="{Binding SalesName}" DataSource="{Binding SalesTotals}" >
  <vc:DataSeries.DataMappings>
  <vc:DataMapping MemberName="AxisXLabel" Path="Date" ></vc:DataMapping>
  <vc:DataMapping MemberName="YValue" Path="SalesTotal" ></vc:DataMapping>
  </vc:DataSeries.DataMappings>
  </vc:DataSeries>
  </DataTemplate>
  </local:SeriesTemplateSelector.SalesTemplate>

  <local:SeriesTemplateSelector.MedianTemplate>
  <DataTemplate> 
  <vc:DataSeries RenderAs="Column" LegendText="{Binding SalesName}" DataSource="{Binding SalesTotals}" >
  <vc:DataSeries.DataMappings>
  <vc:DataMapping MemberName="AxisXLabel" Path="Date" ></vc:DataMapping>
  <vc:DataMapping MemberName="YValue" Path="SalesTotal" ></vc:DataMapping>
  </vc:DataSeries.DataMappings>
  </vc:DataSeries>
  </DataTemplate>
  </local:SeriesTemplateSelector.MedianTemplate>

  </local:SeriesTemplateSelector>

  </UserControl.Resources>

  <Grid x:Name="LayoutRoot">

  <StackPanel Orientation="Vertical" >

  <!-- ======================================= 1st Chart ================================== -->

  <local:MultiChart SeriesSource="{Binding SalesData}" Height="220" Width="400" Margin="0,5,0,0">

问题四:“public class MultiChart : Visifire.Charts.Chart” ,“MultiChart”继承自第三方“Visifire”下“Chart”,为什么不直接使用“Visifire”下“Chart”,而是将其继承一下呢???这样做有什么好处???