在web项目中调试silverlight的时候,经常是web项目中的断点有效,但是不能跳转到silverlight中的断点,跟easysl程序做对比,发现easysl也不能调试:报以下错误:
“无法调试,未安装“silverlight”托管调试包.”GOOGLE的很多方法,并且最终都不行.自己尝试以下解决方法:
1.卸载掉"microsoft silverlight"和"microsoft silverlight 3 tools for visual studio 2008 sp1".,重启机器.如图:
silverlight_developer.exe 文件.
3.安装silverlight3_tools.exe工具.
安装完成以后,EASYSL不报错,但是还是不能调试.选中调试的WEB项目,右键属性,在web选项中,调试器标签下选中“asp.net”和“silverlight”.如图:
重新编译silverlight项目,并且调试。
项目记录:
SLUI 是所有silverlight的 项目集合。
1.web页与silverlight之间参数交互是通过在web页中的控件增加属性,如:
////增加属性,在SILVERLIGHT读取HTML页面的下拉框 的值
ddlYear.Attributes.Add("year", ddlYear.SelectedValue);
ddlMonth.Attributes.Add("month", ddlMonth.SelectedValue);
silverlight页读取增加的属性值:
using System.Windows.Browser;
HtmlDocument doc = HtmlPage.Document;
HtmlElement element = doc.GetElementById("ddlYear");
string stryear = element.GetAttribute("value").ToString();
element = doc.GetElementById("ddlMonth");
string strmonth = element.GetAttribute("value").ToString();
2.参考 easysl的使用方法:
//UI
层 page.xmal.cs
//初始化一个task变量
private Task getProductListTask;
private TaskManager getProductListTaskManager;
=================================================================
//在页面程序初始化
public homepage()
{
this.getProductListTask= newTask();
//初始化请求数据
getProductListTask.BeforeStart+=newEventHandler<EventArgs>(getProductListTask_BeforeStart);
//回调时更新界面
getProductListTask.Callback+=newGetDataAsyncCompleted(GetProductList_CallBack);
}
=============================================================================================
//执行方法voidgetProductListTask_BeforeStart(objectsender,EventArgse)
{
Tasktask=senderasTask;
task.MethodName="GetProductList"; //对应于数据层的方法名
task.ReturnType=typeof(List<Product>);//对应于数据层的返回类型
task.SetParameter("count",int.Parse(this.count.Text));//对应于数据层的方法的参数
}
//回传返回的值publicvoidGetProductList_CallBack(Responseresponse)
{
List<Product>product=reponse.dataasList<Product>;
//updateUI.
}
============================================================================================
//
所以你需要在数据访问层增加对应的方法(指EasySL.Service项目中的“DataService.Method.cs”书写以下方法):
publicList<Product>GetProductList(intcount)
{
//getdatafromxmlordatabase
}
==================================================================================
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
HtmlDocument doc = HtmlPage.Document;
HtmlElement element = doc.GetElementById("ddlYear");
string stryear = element.GetAttribute("value").ToString();
element = doc.GetElementById("ddlMonth");
string strmonth = element.GetAttribute("value").ToString();
dateflag = stryear + strmonth + "00";
PerformMethod();
}
=============================================================================================
/// <summary>
/// 执行方法
/// </summary>
void PerformMethod()
{
//收入类别
this.getProductListTaskManager = new TaskManager();
this.getProductListTaskManager.TaskProcs.Add(this.getProductListTask);
this.getProductListTaskManager.Start();
}