类System.Windows.Input.Cursors中属性定义了一共19个系统支持的鼠标光标。为了加深理解,这里有一个简单的XAML的例子:
<Grid xmlns="http://schemas.microsoft.com/winfx/avalon/2005" xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005">
<Grid.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Margin" Value="1"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightGreen"/>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<Button Grid.Row="0" Grid.Column="0" Name="None"/>
<Button Grid.Row="0" Grid.Column="1" Name="No"/>
<Button Grid.Row="0" Grid.Column="2" Name="Arrow"/>
<Button Grid.Row="0" Grid.Column="3" Name="AppStarting"/>
<Button Grid.Row="1" Grid.Column="0" Name="Cross"/>
<Button Grid.Row="1" Grid.Column="1" Name="Help"/>
<Button Grid.Row="1" Grid.Column="2" Name="IBeam"/>
<Button Grid.Row="1" Grid.Column="3" Name="SizeAll"/>
<Button Grid.Row="2" Grid.Column="0" Name="SizeNESW"/>
<Button Grid.Row="2" Grid.Column="1" Name="SizeNS"/>
<Button Grid.Row="2" Grid.Column="2" Name="SizeNWSE"/>
<Button Grid.Row="2" Grid.Column="3" Name="SizeWE"/>
<Button Grid.Row="3" Grid.Column="0" Name="UpArrow"/>
<Button Grid.Row="3" Grid.Column="1" Name="Wait"/>
<Button Grid.Row="3" Grid.Column="2" Name="Hand"/>
<Button Grid.Row="3" Grid.Column="3" Name="Pen"/>
<Button Grid.Row="4" Grid.Column="0" Name="ScrollWE"/>
<Button Grid.Row="4" Grid.Column="1" Name="ScrollSE"/>
<Button Grid.Row="4" Grid.Column="2" Name="ArrowCD"/>
</Grid>
这个XAML可以在XamlPad中看到其效果。目前只能看到19个空白的Button。而当移动鼠标经过某个Button的时候,其背景颜色会改变。
请在现有的Style的基础上,通过只修改Style的定义,使得:
- 每个Button不再空白,而是显示其Name,即19个系统支持的鼠标光标名称。
- 当移动鼠标经过某个Button时,鼠标的光标成为其Name所指示的那一个。
您只需要将Style的定义部分填写在回复中即可。本期奖品是Effective C#这本书。注意,所有的奖品将在Avalon有奖问答系列全部结束后一起寄出。您需要一个在国内的通讯地址。