Silverlight Tip of the Day #6: Monitoring for Keyboard and Mouse Events.
Silverlight 2提供了鼠标和键盘事件的完整支持。你不仅可以监听整个应用程序的事件还可以在独立的控件级别监听它们。
下面是一个在应用程序级别监听所有键盘和鼠标事件的例子:
Page.xaml.cs:
namespace SilverlightApplication
{
public partial class Page : UserControl
{
public Page()
{
InitializeComponent();
this.KeyDown += new KeyEventHandler(Page_KeyDown);
this.KeyUp += new KeyEventHandler(Page_KeyUp);
this.MouseEnter += new MouseEventHandler(Page_MouseEnter);
this.MouseLeave += new MouseEventHandler(Page_MouseLeave);
this.MouseLeftButtonDown += new MouseButtonEventHandler(Page_MouseLeftButtonDown);
this.MouseLeftButtonUp += new MouseButtonEventHandler(Page_MouseLeftButtonUp);
this.MouseMove += new MouseEventHandler(Page_MouseMove);
}
void Page_KeyDown(object sender, KeyEventArgs e)
{
}
void Page_KeyUp(object sender, KeyEventArgs e)
{
}
void Page_MouseEnter(object sender, MouseEventArgs e)
{
}
void Page_MouseLeave(object sender, MouseEventArgs e)
{
}
void Page_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
}
void Page_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
}
void Page_MouseMove(object sender, MouseEventArgs e)
{
}
}
}
要在控件级别上监听事件,你可以直接在XAML的控件上添加事件处理。在下面的例子中,我们为<Textblock>控件添加了鼠标左键按下和弹起的事件。
Page.xaml:
<UserControl x:Class="SilverlightApplication6.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
<TextBlock x:Name="FPS" MouseLeftButtonDown="FPS_MouseLeftButtonDown"
MouseLeftButtonUp="FPS_MouseLeftButtonUp">Hello there</TextBlock>
</Grid>
</UserControl>
Page.xaml.cs:
namespace SilverlightApplication
{
public partial class Page : UserControl
{
public Page()
{
InitializeComponent();
}
private void FPS_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
FPS.Text = "Mouse button down";
}
private void FPS_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
FPS.Text = "Mouse button up";
}
}
}