一.silverlight与silverlight中可以利用委托(delegate)来刷新frame.Refresh()
1.在子类中定义委托捕捉关闭事件按钮
public delegate void onCloseClick(object sender, RoutedEventArgs e);
public onCloseClick onclose;
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
if (onclose != null)
{
onclose(sender, e);
}
this.Visibility = Visibility.Collapsed;
}
2.在frame所在的页面中利用委托来调用frame.refresh()方法
List<Button> listButton = ShowOpenPanelConfig(tb);
Child_YJCBS yjcb = new Child_YJCBS();
OPPanel op = EasySL.Controls.Window.ShowOpPanel("一键出表", yjcb, this.floatePanel, txtMsgInfo);
op.onclose += (s, e) => { ContentFrame.Refresh(); };
yjcb.onclose += (s, e) =>
{
op.Visibility = Visibility.Collapsed; ContentFrame.Refresh();
};
二、利用aspx中的cookie来控制sl中的定时器
1.在frame所在的页面中定义计时器
private void TimeInitData()
{
if (myDispatcherTimer != null)
myDispatcherTimer.Stop();
//创建计时器
myDispatcherTimer = new System.Windows.Threading.DispatcherTimer();
//创建间隔时间
myDispatcherTimer.Interval = new TimeSpan(, , , );
//创建到达间隔时间后需执行的函数
myDispatcherTimer.Tick += (ss, ee) =>
{
this.ContentFrame.Refresh();
String[] cookies = HtmlPage.Document.Cookies.Split(';');
foreach (String cookie in cookies)
{
String[] keyValues = cookie.Split('=');
{
if (keyValues[].Trim() == "FirCookieKey")
{
myDispatcherTimer.Stop();
}
}
} };
myDispatcherTimer.Start();
}
2.在aspx页面中创建cookie并设置cookie的过期时间
if (isSuccess)
{
Response.Cookies.Clear();
HttpCookie MyCookie = new HttpCookie("FirCookieKey");
MyCookie.Value = "NewCookieValue";
MyCookie.Expires =DateTime.Now.Add(TimeSpan.FromMinutes(0.2));
HttpContext.Current.Response.Cookies.Add(MyCookie);
Server.Transfer("PreviewReport.aspx");
//Page.Response.Write("<script language=javascript>alert(\" 插入成功!\");</script>");
}
注意:以上设置的cookie过期时间为12秒,而sl是已5秒中的加载一次,