详解“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”,而是将其继承一下呢???这样做有什么好处???