Silverlight 全局鼠标按下事件处理程序
Silverlight Global Mouse Down Event Handler
我正拼命尝试实施 "Session Inactivity Timeout" IT 安全策略。
sss
但是,我的不活动重置逻辑没有触发。我究竟做错了什么?由于 Visual Studio 在附加到 Silverlight 二进制文件时崩溃,我无法附加断点。我想知道问题是否非常微妙,例如在调用 App 构造函数时,还没有 "current RootVisual" 。由于#Silverlight 是 dead/obsolescent,因此也使用 #WPF 进行标记。下面的示例代码。
namespace TestApp
{
public partial class App : Application
{
System.Windows.Threading.DispatcherTimer sessionTimer = new System.Windows.Threading.DispatcherTimer();
public App()
{
ResetSessionTimer();
this.RootVisual.AddHandler(UIElement.MouseLeftButtonDownEvent, new MouseButtonEventHandler(rootVisual_MouseLeftButtonDown), true);
//this.RootVisual.MouseLeftButtonDown += rootVisual_MouseLeftButtonDown;
InitializeComponent();
}
private void ResetSessionTimer()
{
sessionTimer.Stop();
sessionTimer.Tick -= sessionTimer_Tick;
sessionTimer = new System.Windows.Threading.DispatcherTimer();
sessionTimer.Interval = TimeSpan.FromMinutes(1);
sessionTimer.Tick += sessionTimer_Tick;
sessionTimer.Start();
}
private void sessionTimer_Tick(object sender, EventArgs e)
{
System.Windows.Browser.HtmlPage.Document.GetElementById("LogoutButton").Invoke("click", null);
}
private void rootVisual_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
// added this alert to see if code is even firing.
System.Windows.Browser.HtmlPage.Window.Invoke("alert", "hello, world");
ResetSessionTimer();
e.Handled = false;
}
}
}
我想通了 - 在代码的某处,以前的开发人员正在使用新的 MainPage() 覆盖 this.RootVisual 元素,以启用他们自己开发的依赖项注入/MVVM 架构。我将逻辑从 App() 构造函数移到了这个赋值运算符之后,它就像魔术一样工作。
我正拼命尝试实施 "Session Inactivity Timeout" IT 安全策略。 sss 但是,我的不活动重置逻辑没有触发。我究竟做错了什么?由于 Visual Studio 在附加到 Silverlight 二进制文件时崩溃,我无法附加断点。我想知道问题是否非常微妙,例如在调用 App 构造函数时,还没有 "current RootVisual" 。由于#Silverlight 是 dead/obsolescent,因此也使用 #WPF 进行标记。下面的示例代码。
namespace TestApp
{
public partial class App : Application
{
System.Windows.Threading.DispatcherTimer sessionTimer = new System.Windows.Threading.DispatcherTimer();
public App()
{
ResetSessionTimer();
this.RootVisual.AddHandler(UIElement.MouseLeftButtonDownEvent, new MouseButtonEventHandler(rootVisual_MouseLeftButtonDown), true);
//this.RootVisual.MouseLeftButtonDown += rootVisual_MouseLeftButtonDown;
InitializeComponent();
}
private void ResetSessionTimer()
{
sessionTimer.Stop();
sessionTimer.Tick -= sessionTimer_Tick;
sessionTimer = new System.Windows.Threading.DispatcherTimer();
sessionTimer.Interval = TimeSpan.FromMinutes(1);
sessionTimer.Tick += sessionTimer_Tick;
sessionTimer.Start();
}
private void sessionTimer_Tick(object sender, EventArgs e)
{
System.Windows.Browser.HtmlPage.Document.GetElementById("LogoutButton").Invoke("click", null);
}
private void rootVisual_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
// added this alert to see if code is even firing.
System.Windows.Browser.HtmlPage.Window.Invoke("alert", "hello, world");
ResetSessionTimer();
e.Handled = false;
}
}
}
我想通了 - 在代码的某处,以前的开发人员正在使用新的 MainPage() 覆盖 this.RootVisual 元素,以启用他们自己开发的依赖项注入/MVVM 架构。我将逻辑从 App() 构造函数移到了这个赋值运算符之后,它就像魔术一样工作。