1. ToolTipToolTip
控件用于显示页面元素的附加解释信息.就像 html 中的某些元素的alt属性
示例代码如下:ToolTip 控件 示例:
<Grid x:Name="LayoutRoot" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="20,0,20,0" Width="300" Height="180">
<Grid.RowDefinitions>
<RowDefinition MinHeight="30"></RowDefinition>
<RowDefinition MinHeight="30"></RowDefinition>
<RowDefinition MinHeight="30"></RowDefinition>
<RowDefinition MinHeight="30"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Height="14" Grid.Row="0" Grid.Column="0">用户名:</TextBlock>
<TextBlock Height="14" Grid.Row="1" Grid.Column="0">用户密码:</TextBlock>
<TextBlock Height="14" Grid.Row="3" Grid.Column="0">密匙:</TextBlock>
<TextBox Width="120" Height="24" Grid.Row="0" Grid.Column="1" ToolTipService.ToolTip="注意区分大小写"></TextBox>
<PasswordBox Width="120" Height="24" Grid.Row="1" Grid.Column="1"></PasswordBox>
<Button Click="Button_Click" Width="120" Height="24" Grid.Row="2" Grid.Column="1" Content="获取密匙" ToolTipService.ToolTip="单击按钮将获取有效地开发授权密匙">
</Button>
</Grid>
以上是一个获取数据访问密匙的页面片段, 其中红字部分就是 ToolTip 控件的声明和使用, 当然你也可以用下面这种方式为按钮声明 ToolTip 提示控件, 其效果是一样的<Button Click="Button_Click" Width="120" Height="24" Grid.Row="2" Grid.Column="1" Content="获取密匙">
<ToolTipService.ToolTip>
<ToolTip Content="单击按钮将获取有效地开发授权密匙"></ToolTip>
</ToolTipService.ToolTip>
</Button>
效果图如下:
看了以上代码会发现都是从 ToolTipService 这个ToolTip的管理类来获取ToolTip对象, 而ToolTipService 类 还有两个附加项属性: Placement (ToolTip显示位置) 和 PlacementTarget (ToolTip依照该属性指定的元素进行定位) , 当使用代码为大量元素绑定 ToolTip 时很有用
2. Popup
Popup 对象的作用是在现有Silverlight内容之上显示Popup.Child属性中指定的内容。继续上例,当点击按钮时为提交过程模拟一个Loading效果, 当然这个Loading你等到天荒地老也不会完成的,该Loading效果的按钮事件代码如下ToolTip 对象
示例:
using System.Windows.Controls.Primitives;
..
private void Button_Click(object sender, RoutedEventArgs e)
{
//创建文本
TextBlock textblock = new TextBlock();
textblock.Text = "Loading";
textblock.Width = 120;
textblock.Height = 24;
textblock.FontSize = 18;
//创建遮蔽
Grid grid = new Grid();
SolidColorBrush brushcolor = new SolidColorBrush();
brushcolor.Color = Colors.White;
grid.Background = brushcolor;
grid.Opacity = 0.8;
grid.Width = Application.Current.Host.Content.ActualWidth;
grid.Height = Application.Current.Host.Content.ActualWidth;
grid.Children.Add(textblock);
//创建Popup
Popup p = new Popup();
//为Popup指定内容
p.Child = grid;
//显示Popup
p.IsOpen = true;
}
运行后效果如下:
3. ChildWindow
提供可在父窗口之上显示的一个窗口并且阻止与父窗口的交互, 实际上就是一个增强版的 Popup , 多了一个如上例中Loading那样的遮蔽层,我们将上例中的Loading效果,改为使用 ChildWindow 实现代码如下:ChildWindow 对象
示例:
private void Button_Click(object sender, RoutedEventArgs e)
{
SolidColorBrush brushcolor = new SolidColorBrush();
brushcolor.Color = Colors.White;
ChildWindow cw = new ChildWindow();
cw.HasCloseButton = false;
cw.FontSize = 18;
cw.Opacity = 0.8;
cw.OverlayBrush = brushcolor;
cw.Content = "Loading";
cw.Show();
}
运行后效果如下:
实际上 ChildWindow 对象 还可以包含一个标题栏和一个关闭按钮, 只不过loading不需要, 我们禁用了而已
4. MessageBox
MessageBox为使用 js 中的模态窗口来显示信息, 还是以上例进行扩展, 比如该功能暂时关闭时,可以如下方式显示:MessageBox 对象
示例
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("该功能暂时关闭,请稍后再试");
}
运行后效果如下: