在“Silverlight”的项目中,其中有一个“ViewModel.cs”类。1、“ViewModel.cs”类中有一个“DataPointsOfSeries”(实体对象),代码如下:
public ObservableCollection<DataPointCollection> DataPointsOfSeries
{
get
{
return _dataPointsOfSeries;
}
set
{
_dataPointsOfSeries = value;
FirePropertyChanged("DataPointsOfSeries");
}
}2、在“XAML”(Page.xaml)文件中
<UserControl.DataContext>
<local:ViewModel></local:ViewModel>
</UserControl.DataContext> <vc:DataSeries RenderAs="Line" LightWeight="true" ShadowEnabled="false" LightingEnabled="false" MarkerSize="4" LineThickness="1" DataPoints="{Binding DataPointsOfSeries[0]}" />问题一:通过“<UserControl.DataContext>”,“ViewModel.cs”类仿佛变成了“Page.xaml文件的后台文件(Page.xaml.cs)”,其中的“DataPointsOfSeries”实体对象可以直接被绑定,请问这是为什么???问题二:“<UserControl.DataContext>”到底有什么作用呢?是不是“DataPointsOfSeries”实体对象如果在“Page.xaml.cs”中就不需要“<UserControl.DataContext>”了???问题三:“Page.xaml.cs”中几乎没有逻辑了,全部被封装在了“ViewModel.cs”类中。从“Page.xaml.cs”调用“ViewModel.cs”类中方法,“<UserControl.DataContext>”就好像是一个桥梁似的?
public ObservableCollection<DataPointCollection> DataPointsOfSeries
{
get
{
return _dataPointsOfSeries;
}
set
{
_dataPointsOfSeries = value;
FirePropertyChanged("DataPointsOfSeries");
}
}2、在“XAML”(Page.xaml)文件中
<UserControl.DataContext>
<local:ViewModel></local:ViewModel>
</UserControl.DataContext> <vc:DataSeries RenderAs="Line" LightWeight="true" ShadowEnabled="false" LightingEnabled="false" MarkerSize="4" LineThickness="1" DataPoints="{Binding DataPointsOfSeries[0]}" />问题一:通过“<UserControl.DataContext>”,“ViewModel.cs”类仿佛变成了“Page.xaml文件的后台文件(Page.xaml.cs)”,其中的“DataPointsOfSeries”实体对象可以直接被绑定,请问这是为什么???问题二:“<UserControl.DataContext>”到底有什么作用呢?是不是“DataPointsOfSeries”实体对象如果在“Page.xaml.cs”中就不需要“<UserControl.DataContext>”了???问题三:“Page.xaml.cs”中几乎没有逻辑了,全部被封装在了“ViewModel.cs”类中。从“Page.xaml.cs”调用“ViewModel.cs”类中方法,“<UserControl.DataContext>”就好像是一个桥梁似的?
解决方案 »
- 在c#中实现sql server 数据库中的自增值,大家有什么好建议
- 如何取变长字符串中的子字符中信息!
- 北京招聘DotNet程序员
- 如何实现类似WinRAR在系统右键菜单里添加菜单的功能?
- 求一个c# 局域网语音聊天的实例
- vs.net 2005 CTP 中的webparts不可用?
- 出错了,出错了,急
- win form中的datagrid,怎么样通过鼠标的拖动来选择多行?
- 中文输入的问题
- 谁能解决送.net开发OA办公源代码。如何调用window API函数在windows窗口中的menubar(即菜单)栏中加入自己的命令?
- 请问.NET在大数据处理方面有哪些好的解决方案?
- C#获取本程序所在路径
===========
silverlight里的viewmodel还是在客户端的,等于把客户端分成了ui(xaml)和viewmodel两层。既然都在客户端,所以容易绑定。
mvvm的设计就是为了分离ui和业务逻辑,等于是把业务逻辑基本放在viewmodel里,通过属性和xaml绑定。
silverlight和mvvm我只了解大致原理,实战经验很少,只能说这么多。
http://msdn.microsoft.com/zh-cn/library/ms752347.aspx
谢谢。
那么可不可以再请教一下,“后台中的控件(比如,Combobox)的DataSource属性”和前台的“Bingnding”方法有什么不同呢?又有什么联系?