用Silverlight实现了遮罩的那种效果.

这种效果很常见的,就是当用户点击页面上某个选项或按钮,弹出一个窗口,同时窗口其他部分用半透明色给遮罩起来,不允许编辑.
用Silverlight做了一个,写下来总结一下:
1.新建一个NewWindow.xaml文件,默认代码如下:
<UserControl x:Class="SilverlightDemo.DetailView"
    xmlns
="http://schemas.microsoft.com/client/2007" 
    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml" 
   
>
    
<Grid>

    
</Grid>
</UserControl>
2.在Grid中添加一个Rectangle,并设置Opacity(透明度)和Fill(填充色)属性,形如下:
<Rectangle Opacity="0.8" Fill="LightGray"/>
3.然后下面的内容就是要显示的东西了,我这里让他显示一个TextBlock和一个关闭按钮,形如下:
<Border CornerRadius="30" Background="#ff5c7890" Width="600" Height="250">
    
<StackPanel>
        
<Grid Margin="30">
            
<TextBlock Text="{Binding FirstName}" Foreground="White" FontSize="20"/>
            
<Button Content="close" Click="Button_Click" Width="50" Height="30"/>
        
</Grid>
    
</StackPanel>
</Border>
4.关闭按钮的Click方法如下,也就是设置Visibility的值而已.形如下:
private void Button_Click(object sender, RoutedEventArgs e)
{
    Visibility = Visibility.Collapsed;
}
5.OK,NewWindow.xaml文件就到这里,下面只要在需要遮罩的文件中使用就可以了,我这里是在page.xaml文件中单击按钮是弹出遮罩.所以:
首先,引入命名空间,具体的要看你的项目,我这里是:
xmlns:app="clr-namespace:SilverlightDemo"
然后直接在page.xaml页面中插入自定义控件NewWindow,记得设置属性Visibility为Collapsed,让他在页面载入时是不弹出来的.形如下:
<app:DetailView x:Name="detailView" Grid.RowSpan="2" Visibility="Collapsed"/>
然后在按钮的Click事件中把Visibility值设置成Visible就可以了.形如下:
private void Button1_OnClick(object sender, RoutedEventArgs e){
  detailView.Visibility = Visibility.Visible;
}

啰啰嗦嗦的讲了一堆,其实就是很简单的问题.呵呵!
posted @ 2008-06-23 15:00  小牛大牛  阅读(2293)  评论(1编辑  收藏  举报
咱这社会,努力不一定会有回报,但要是不努力,您可就得空虚.您说这讨老婆,生孩子,买房子,购车子,哪样不得自己动手,别人动手咱也不能放心啊,您说是不是这么个理儿?....