Silverlight专题

知识博客专集

Silverlight与HTML集成方法


  【it168 技术】object元素可以被用于silverlight插件的html嵌入和配置,但是要在浏览器兼容的方式下进行。比较常见的应用有俩种,一个是嵌入 silverlight 插件,并将该应用程序指定给宿主。另一个是指定在未安装 silverlight 时显示的备用 html。

  这些应用对应于 html 页的不同部分,尤其是,对应于 object 元素的不同配置参数。首先我们来介绍怎样使用每个过程中的代码段。最后把他们结合起来,就确保得到了跨浏览器兼容性,并基于 visual studio 和 expression blend 用来动态生成测试页的模板。

  嵌入插件

  将 object 元素添加到 html,并指定属性和子 param 元素。

  width 和 height 属性是跨浏览器兼容性所必需的。可以相对于父元素的宽度和高度指定固定像素值或百分比。如果使用相对大小调整,可以通过处理 content.resized 事件对插件大小的更改做出响应。

  type 属性和显示的特定值也是必需的。此值使用 silverlight mime 类型来标识插件和必需的版本。建议使用 data 属性及其值,以避免某些浏览器出现性能问题。请注意数据值的尾随逗号。它表示具有空值的第二个数据参数。名为 source 的 param 元素是必需的,该元素表示应用程序文件的位置和名称。通常在相对于 html 文件的位置指定一个 .xap 应用程序包。

  指定要在未安装 silverlight 时显示的备用 html

  向子 param 元素后的 object 元素添加 html 内容。

  该示例显示了默认安装映像源和安装程序 uri。使用这些 uri,服务器可以检测到用户的浏览器设置以提供正确版本的安装映像和安装程序。如果用户的浏览器不受支持,单击映像可使浏览器打开 silverlight requirements页。

  为了将 silverlight 安装体验集成到网页中,可以任意提供复杂的备用 html。不过,在许多情况下,用户必须在安装 silverlight 后重新启动或刷新浏览器。对于 internet explorer 而言,只需要刷新浏览器,除非用户安装的是早期版本的 silverlight 并通过安装链接升级。也可以自动刷新浏览器,或者通过使用 silverlight.js 文件中的帮助器功能取消刷新要求。还可以使用 silverlight.js 执行细化的浏览器要求检测。

  下面的代码示例提供了使用整个浏览器窗口的 silverlight 应用程序的完整 html 页。该示例基于当您选择动态生成测试页时 visual studio 所使用的默认 html。该示例使用级联样式表 (css) 和 div 元素来包含插件。这可以确保插件延伸到浏览器窗口的边缘。此元素和其他附加到 html 的元素有助于确保跨浏览器兼容。

  iframe 元素也用于确保跨浏览器兼容性。iframe 的存在可避免 safari 浏览器缓存页面。当用户向后导航到以前访问过的 silverlight 页面时,safari 缓存可避免重新加载 silverlight 插件。该示例使用 javascript 函数处理插件的 onerror 事件。javascript 错误处理程序在调试过程中很有用,但通常在部署应用程序时将其移除。

  本示例还包含 minruntimeversion 和 autoupgrade 设置以便在未安装指定 silverlight 版本时提供升级体验。若要在 web 浏览器窗口中查看该示例,必须在 source 参数中指定有效的 silverlight 应用程序包。

  代码

     其实silverlight程序是以控件的形式嵌入到html页面中的,这里是把将要整合的html页面利用iframe置于silverlight控件之上,而不影响silverlight控件的正常工作。

  操作要点:1.编辑按钮的xaml,定义mouseleftbuttondown,使按下鼠标左键时,触发相应函数。2.在该页面的js文件中,关联按钮。

  代码:

  3.该项目的html文件。

  代码:

  也可以通过修改silverlight中的iswindowless属性为true,然后利用<dir>来进行覆盖。当然,还是以silverlight来实现的方案比较完美,不过,最后的例子也不失为一种快速的解决方案。

一步一步学Silverlight 2系列(4):鼠标事件处理


概述

Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入Silverlight 2开发。

本文为系列文章第四篇,学习Silverlight 2中的鼠标事件处理,支持的鼠标事件包括MouseMove 、MouseEnter 、MouseLeave 、MouseLeftButtonDown、MouseLeftButtonUp。

声明事件

对于鼠标事件我们可以附加到任何Silverlight对象上面,如下面的XAML声明,为两个圆形添加上MouseEnter和MouseLeave事件:

<Canvas Background="#46461F">
    <Ellipse Width="120" Height="120" Fill="Orange"
             Canvas.Top="60" Canvas.Left="80"
             MouseEnter="OnMouseEnter"
             MouseLeave="OnMouseLeave"/>

    <Ellipse Width="120" Height="120" Fill="Orange"
             Canvas.Top="60" Canvas.Left="280"
             MouseEnter="OnMouseEnter"
             MouseLeave="OnMouseLeave"/>
</Canvas>

编写事件处理程序,鼠标放上去时和鼠标移开时分别改变圆形的填充色:

void OnMouseEnter(object sender, MouseEventArgs e)
{
    Ellipse ell = sender as Ellipse;
    ell.Fill = new SolidColorBrush(Colors.Yellow);
}
void OnMouseLeave(object sender, MouseEventArgs e)
{
    Ellipse ell = sender as Ellipse;
    ell.Fill = new SolidColorBrush(Colors.Green);
}

运行后效果如下:

TerryLee_Silverlight2_0030

分别在两个圆形上放上鼠标并移开后如下所示:

TerryLee_Silverlight2_0031

使用代码管理事件

除了在XAML中声明事件外,也可以直接使用代码来注册事件,简单的修改一下上面的XAML文件,去掉事件的声明并为两个圆形分别加上Name:

<Canvas Background="#46461F">
    <Ellipse x:Name="ellipse1" Width="120" Height="120" Fill="Orange"
             Canvas.Top="60" Canvas.Left="80"/>

    <Ellipse x:Name="ellipse2" Width="120" Height="120" Fill="Orange"
             Canvas.Top="60" Canvas.Left="280"/>
</Canvas>

在代码中进行事件注册:

public partial class Page : UserControl
{
    public Page()
    {
        InitializeComponent();
        ellipse1.MouseEnter += new MouseEventHandler(OnMouseEnter);
        ellipse1.MouseLeave += new MouseEventHandler(OnMouseLeave);
        ellipse2.MouseEnter += new MouseEventHandler(OnMouseEnter);
        ellipse2.MouseLeave += new MouseEventHandler(OnMouseLeave);
    }

    void OnMouseEnter(object sender, MouseEventArgs e)
    {
        Ellipse ell = sender as Ellipse;
        ell.Fill = new SolidColorBrush(Colors.Yellow);
    }
    void OnMouseLeave(object sender, MouseEventArgs e)
    {
        Ellipse ell = sender as Ellipse;
        ell.Fill = new SolidColorBrush(Colors.Green);
    }
}

运行后可以看到跟上面一样的效果:

TerryLee_Silverlight2_0031

事件数据

所有的鼠标事件都使用MouseButtonEventArgs和MouseEventArgs作为事件数据,通过这两个参数可以获取相关事件数据,使用GetPosition方法或者Source、Handled属性。如下面的XAML声明:

<Canvas Background="#46461F">
    <Rectangle Fill="Orange" Stroke="White" StrokeThickness="2"
               Canvas.Top="40" Canvas.Left="130"
               Width="240" Height="120"
               MouseMove="Rectangle_MouseMove"/>
    <TextBlock x:Name="Status" Foreground="White" Text="Status"
               Canvas.Left="100" Canvas.Top="200"/>
</Canvas>

为矩形添加MouseMove事件处理,在鼠标移动时我们获取当前坐标位置,并显示出来:

private void Rectangle_MouseMove(object sender, MouseEventArgs e)
{
    Point p = e.GetPosition(e.Source as FrameworkElement);
    Status.Text = String.Format("坐标位置({0}:{1})",p.X,p.Y);
}

运行后在矩形中移动鼠标,效果如下:

TerryLee_Silverlight2_0032

路由事件

在Silverlight中,提供了事件路由,使得我们可以在父节点上接收和处理来自于子节点的事件,Silverlight中的路由事件采用了冒 泡路由策略。在鼠标事件中MouseLeftButtonDown 、MouseLeftButtonUp 、MouseMove三个事件都支持路由事件,而MouseEnter、MouseLeave两个事件不支持。下面的XAML中我们为Canvas对象声 明了一个MouseLeftButtonDown事件:

<Canvas x:Name="ParentCanvas" Background="#46461F"
        MouseLeftButtonDown="ParentCanvas_MouseLeftButtonDown">
    <Rectangle x:Name="RecA" Fill="Orange" Stroke="White" StrokeThickness="2"
               Canvas.Top="40" Canvas.Left="60"
               Width="160" Height="100"/>
    <Rectangle x:Name="RecB" Fill="LightBlue" Stroke="White" StrokeThickness="2"
               Canvas.Top="40" Canvas.Left="240"
               Width="160" Height="100"/>
    <TextBlock x:Name="Status" Foreground="White" Text="Status"
               Canvas.Left="100" Canvas.Top="200"/>
</Canvas>

添加MouseLeftButtonDown事件处理程序,显示当前鼠标按下时的坐标,并显示源控件名称:

private void ParentCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    String msg = "x:y = " + e.GetPosition(sender as FrameworkElement).ToString();
    msg += " from " + (e.Source as FrameworkElement).Name;
    Status.Text = msg;
}

运行后在RecA上按下鼠标:

TerryLee_Silverlight2_0033

在Canvas上按下鼠标:

TerryLee_Silverlight2_0034

结束语

本文简单介绍了Silverlight 2中关于鼠标事件处理的一些知识,包括事件注册、获取事件数据、路由事件等。在下一篇中,我们将使用这些鼠标事件来实现一个简单的拖放功能。

一步一步学Silverlight 2系列(3):界面布局


概述

Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入Silverlight 2开发。

本文为系列文章第三篇,学习Silverlight 2中的界面布局,Silverlight 2中新增加了Grid和Panel两个布局容器,使得界面布局更加的强大和灵活。

Canvas面板

Canvas 是在Silverlight 1.0时代就有的一种基础布局面板,它采用绝对坐标定位。可以使用附加属性(Attached Property)对Canvas中的元素进行定位,通过附加属性我们指定控件相对于其直接父容器Canvas 控件的上、下、左、右坐标的位置。如下面的XAML声明了两个矩形,它们分别相对于父容器Canvas的左边距是50,相对于父容器Canvas的上边距 分别是50和150:

TerryLee_Silverlight2_0020

运行后界面的效果如下所示:

TerryLee_Silverlight2_0021

除 了上面我们用到的Canvas.Top和Canvas.Left两个附加属性外,还有一个Canvas.ZIndex附加属性。如果指定了两个控件相对于 父容器Canvas同样的边距,则后面声明的控件父覆盖前面声明的控件。这时我们可以使用Canvas.ZIndex属性来改变它们的显示顺序,如下面的 XAML声明:

<Canvas Background="#46461F">
    <Rectangle Fill="#0099FF" Width="160" Height="80"
               Canvas.Top="100" Canvas.Left="100">

    <Rectangle Fill="#FF9900" Width="160" Height="80"
             Canvas.Top="100" Canvas.Left="100"/>
</Canvas>

指定两个矩形相对于父容器Canvas的边距相同,这时默认的后声明的橙色矩形会覆盖蓝色矩形:

TerryLee_Silverlight2_0023

指定Canvas.ZIndex为1

<Canvas Background="#46461F">
    <Rectangle Fill="#0099FF" Width="160" Height="80"
               Canvas.Top="100" Canvas.Left="100" Canvas.ZIndex="1"/>

    <Rectangle Fill="#FF9900" Width="160" Height="80"
             Canvas.Top="100" Canvas.Left="100"/>
</Canvas>

将会让蓝色矩形显示在上面,值最大的显示在最上面:

TerryLee_Silverlight2_0024

StackPanel

StackPanel支持用行或列的方式来进行页面布局,默认情况下所有的子元素会垂直的排列显示,如下面的XAML声明三个矩形:

<StackPanel Background="#46461F">
    <Rectangle Fill="#0099FF" Stroke="White"
               Width="100" Height="50" Margin="10"/>
    <Rectangle Fill="#0099FF" Stroke="White"
               Width="100" Height="50" Margin="10"/>
    <Rectangle Fill="#0099FF" Stroke="White"
               Width="100" Height="50" Margin="10"/>
</StackPanel>

运行后在界面显示效果如下:

TerryLee_Silverlight2_0025

当然我们也可以指定为水平排列,通过Orientation属性指定:

<StackPanel Background="#46461F" Orientation="Horizontal">
    <Rectangle Fill="#0099FF" Stroke="White"
               Width="100" Height="50" Margin="10"/>
    <Rectangle Fill="#0099FF" Stroke="White"
               Width="100" Height="50" Margin="10"/>
    <Rectangle Fill="#0099FF" Stroke="White"
               Width="100" Height="50" Margin="10"/>
</StackPanel>

运行后界面显示效果如下:

TerryLee_Silverlight2_0026

在这里为了让各个控件之间有一定的距离,使用了Margin属性,该属性类似于HTML中的Margin。

Grid

Grid控件类似与HTML中的Table,只不过子元素不用放在单元格中。通过<Grid.RowDefinitions> 和 <Grid.ColumnDefinitions>来定义Grid的行和列,使用Grid.Row和Grid.Column两个附加属性指定 子元素在Grid中显示的位置,这是一种非常灵活的布局方式。如下面的XAML声明:

<Grid x:Name="LayoutRoot" Background="#46461F" ShowGridLines="True">
    <Grid.RowDefinitions>
        <RowDefinition Height="120"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="100"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Row="0" Grid.Column="0" Text="UserName:" VerticalAlignment="Center" Foreground="White"></TextBlock>
    <TextBlock Grid.Row="1" Grid.Column="0" Text="Password:" VerticalAlignment="Center" Foreground="White"></TextBlock>
    <TextBox Grid.Row="0" Grid.Column="1" Width="200" Height="30" HorizontalAlignment="Left"></TextBox>
    <TextBox Grid.Row="1" Grid.Column="1" Width="200" Height="30" HorizontalAlignment="Left"></TextBox>
</Grid>

定义一个两行两列的Grid,做一个简单的用户登录的布局,为了明显起见,把ShowGridLines属性设为True,以便能够显示出边框线。同时,我们指定了第一行的高度为120,而第二行的则是剩余的高度,用*来指定。运行后效果如下:

TerryLee_Silverlight2_0027

综合实例

分别了解了上面的三个布局控件,接下来我们看一个综合实例,如何完成如下的一个取色器:

TerryLee_Silverlight2_0028

首先我们添加一个两行两列的Grid控件,分别指定行高和列宽:

<Grid x:Name="LayoutRoot" Background="White">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="260" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="120" />
        <RowDefinition Height="120" />
    </Grid.RowDefinitions>
</Grid>

添加颜色显示区域,用一个矩形显示,放入Grid的第0行第1列:

<Rectangle Grid.Row="0" Grid.Column="1" x:Name="PreviewColor"
                   Fill="#FF6600" Margin="10" Stroke="#666666" StrokeThickness="2" />

再添加颜色值显示区,嵌套一个StackPanel控件,让它里面的子控件垂直显示:

<StackPanel Grid.Row="1" Grid.Column="1" >
    <TextBlock FontSize="12">Color</TextBlock>
    <TextBox x:Name="HexColor" Width="160" Height="30" Text="#FF6600" Margin="10,5" FontSize="11"/>
</StackPanel>

左边用四个Silder控件和四个TextBlock控件显示,需要对Grid的行进行合并Grid.RowSpan属性:

<StackPanel Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" VerticalAlignment="Center">
   <TextBlock Text="Alpha" FontSize="12" Margin="10,15,0,0"/>
   <Slider x:Name="AlphaSlider" Margin="20,0,10,0" Maximum="255" Value="255" ValueChanged="RedSlider_ValueChanged"/>
   <TextBlock Text="Red" FontSize="12" Margin="10,15,0,0"/>
   <Slider x:Name="RedSlider" Margin="20,0,10,0" Maximum="255" Value="255" ValueChanged="RedSlider_ValueChanged"/>
   <TextBlock Text="Green" FontSize="12" Margin="10,15,0,0"/>
   <Slider x:Name="GreenSlider" Margin="20,0,10,0" Maximum="255" Value="102" ValueChanged="RedSlider_ValueChanged"/>
   <TextBlock Text="Blue" FontSize="12" Margin="10,15,0,0"/>
   <Slider x:Name="BlueSlider" Margin="20,0,10,0" Maximum="255" Value="0" ValueChanged="RedSlider_ValueChanged"/>
</StackPanel>

这样我们就完成了上面这样相对复杂的界面布局,对Slider控件添加事件处理程序:

private void RedSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    Color color = Color.FromArgb((byte)AlphaSlider.Value, (byte)RedSlider.Value, (byte)GreenSlider.Value, (byte)BlueSlider.Value);

    PreviewColor.Fill = new SolidColorBrush(color);
    HexColor.Text = color.ToString();
}

运行后,可以选取不同的颜色值:

TerryLee_Silverlight2_0029

结束语

关于界面布局就说到这里,在Silverlight 2中,通过上面的三种布局控件相结合,可以进行非常强大和灵活的界面布局。

一步一步学Silverlight 2系列(2):基本控件


概述

Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入Silverlight 2开发。

本文为系列文章第二篇学习几个基本的控件。

在Silverlight 2中,提供了大量的控件,包括Button、、Calendar 、CheckBox 、DataGrid 、DatePicker 、GridSplitter 、HyperlinkButton 、ListBox 、RadioButton 、ScrollViewer 、Slider 、ToggleButton、ToolTip 、WatermarkedTextBox等,本文将讲述其中的几个控件之用法。

控件之ToggleButton

翻转效果在AJAX时代已经相当多了,Silverlight中内置了ToggleButton控件,可以使用如下XAML代码声明一个ToggleButton:

TerryLee_Silverlight2_0010

运行后界面如下:

TerryLee_Silverlight2_0011

单击按钮后,控件效果外观效果将会改变:

TerryLee_Silverlight2_0012

ToggleButton控件有一个很重要的属性IsThreeState,指示控件是否保持三种状态,如设为false,则只会保持两种状态。

控件之WatermarkedTextBox

WatermarkedTextBox 即水印效果文本框,可以在文本框未获得焦点之前显示一段文字提示信息,也可以显示其它的控件。如下面的XAML中,在第一个 WatermarkedTextBox中指定水印效果为显示一段文字提示“Please enter password”,而第二个则指定水印效果为一张图片:

TerryLee_Silverlight2_0013

运行后效果如下所示:

TerryLee_Silverlight2_0014

单击其中一个文本框:

TerryLee_Silverlight2_0015

控件之ScrollViewer

ScrollViewer控件使用非常简单,当其中显示的内容超过它自身的大小时,就会有滚动条出现。通过属性HorizontalScrollBarVisibility和VerticalScrollBarVisibility来控制纵向和横向滚动条是否出现:

TerryLee_Silverlight2_0016

运行上面的示例:

TerryLee_Silverlight2_0017

控件之ToolTip

ToolTip控件很多时候都用于其它控件的内嵌控件,如Button控件的ToolTip附加属性等。声明ToolTip控件如下面的XAML所示,当鼠标放上按钮时显示一个简单的信息提示:

TerryLee_Silverlight2_0018

运行后鼠标放上按钮时效果:

TerryLee_Silverlight2_0019

结束语

本文简单的演示了Silverlight 2中的几个控件的使用,对于DataGrid和ListBox等控件一般用来显示列表数据,将会在后面的数据绑定中讲述,而其它的诸如Button、TextBlock等控件的使用非常简单,这里不再讲述。

一步一步学Silverlight 2系列(1):创建一个基本的Silverlight应用


概述

Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入Silverlight 2开发。

本文为系列第一篇创建一个基本的Silverlight 2应用,不能免俗,从最简单的Hello Word 开始。

建立项目

安装完Silverlight 2 Beta 1之后打开VS2008,打开新建项目对话框,可以看到Silverlight Application项目模板。

TerryLee_Silverlight2_0001

Silverlight应用不能够独立运行,之后弹出的对话框中可供我们选择创建一个ASP.NET Web Site或者Web Application Project用来托管Silverlight应用程序。

TerryLee_Silverlight2_0002

这里我们选择创建一个Web Application Project,创建完成后的项目结构如下所示:

TerryLee_Silverlight2_0003

理解.xap文件

在建立一个Silverlight应用程序后,我们什么都不做,直接编译一下整个解决方案,可以看到在资源管理器中多出了一个ClientBin的文件夹,并在下面添加了一个TerryLee.SilverlightDemo2.xap的文件。

TerryLee_Silverlight2_0004

该 文件是一个标准的.NET程序集,在编译的时候所有的XAML标识和资源文件如图片等都会包含在里面,采用了标准的Zip压缩算法,以减少客户端下载的文 件体积。拷贝一份该文件,并且修改后缀名.xap为.zip,并且解压缩,可以看到里面包含了一些dll文件和一个AppManifest.xaml:

TerryLee_Silverlight2_0005

再打开TerryLee.SilverlightDemo2TestPage.aspx文件,在页面的顶部引入了System.Web.Silverlight程序集,支持<asp:Silverlight/>控件:

<%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls"
    TagPrefix="asp" %>

<asp:Silverlight/>控件的声明如下,其中属性Source属性指定了刚才编译生成的.xap文件的路径:

<asp:Silverlight ID="Xaml1" runat="server"
        Source="~/ClientBin/TerryLee.SilverlightDemo2.xap"
        Version="2.0" Width="100%" Height="100%" />

创建一个Hello Word程序

现在我们创建一个简单的Hello Word Silverlight程序,使用如下XAML创建一个简单的按钮:

TerryLee_Silverlight2_0006

运行后效果如下:

TerryLee_Silverlight2_0007

为按钮添加Click事件,在XAML编辑器中输入事件名称Click之后,再按Tab键将会使用默认的命名方法生成事件处理方法:

TerryLee_Silverlight2_0008

打开Page.xaml.cs文件后,可以看到已经生成了对应的事件处理方法,现在就可以用熟悉的C#来编写处理程序了,如单击按钮时我们改变按钮的背景色和文字:

private void myButton_Click(object sender, RoutedEventArgs e)
{
    this.myButton.Content = "Clicked!";
    this.myButton.Background = new SolidColorBrush(Colors.Red);
}

再运行上面的程序并单击按钮,按钮的文字及背景色发生了变化:

TerryLee_Silverlight2_0009

结束语

本篇文章是使用Visual Studio 2008开发Silverlight 2应用程序的一个入门,相信大家都已经看过ScottGu的文章已经有所了解。但是为了整个系列完整起见,还是做了一下重复的劳动。

silverlight 父窗体传值给ChildWindow


在网上找了许多列子,有的没有看懂,有的太麻烦,都放弃了。

现在又两种方法又简单有使用,分享给大家

第一种:使用构造函数传值

1、子页面新建一个构造函数

 public childwindowtest(string texts)
        {
          
            initializecomponent();
            //父类传过来的值
            this.text1.text = texts;
        }

//texts就是父页面传过来的值

2、父页面创建子页面的对象

//需要在childwindow中构造函数进行传值
childwindowtest childwindow = new childwindowtest(\”childwindow用法:父页,子页相互传值\”);

3、子页面的构造函数的参数 texts 就是“childwindow用法:父页,子页相互传值”

第二种:

1、在子页面定义一个方法

public void updatetext(string str)
        {
            tbname.text = str;
        }

2、在父页面创建子页面对象

childwindowtest childwindow = new childwindowtest();

3、在父页面对开子页面时,调用子页面的方法

childwindow.updatetext(\”childwindow用法:父页,子页相互传值\”);

子页面的方法updatetext(string str)中,就可以操作这个传过来的值了

Silverlight WriteableBitmap使用


writeablebitmap 是一个可写入并可更新的 bitmapsource。bitmapsource 是 wpf/silverlight 图像处理管线的基本构造块,从概念上说表示具有特定大小和分辨率的单个不变的像素集

xaml代码

    <grid x:name=\”layoutroot\” background=\”white\”>
        <mediaelement height=\”120\” horizontalalignment=\”left\” margin=\”25,23,0,0\” name=\”mediaelement1\” verticalalignment=\”top\” width=\”160\” source=\”20101218002.wmv\” mouseleftbuttonup=\”mediaelement1_mouseleftbuttonup\” />
        <toolkit:wrappanel height=\”151\” horizontalalignment=\”left\” margin=\”12,149,0,0\” name=\”wrappanel1\” verticalalignment=\”top\” width=\”376\” />
    </grid>

cs代码

        private void mediaelement1_mouseleftbuttonup(object sender, mousebuttoneventargs e)
        {
            system.windows.media.imaging.writeablebitmap wi = new system.windows.media.imaging.writeablebitmap(mediaelement1, null);
            image image1 = new image();
            image1.width = 100;
            image1.height = 100;
            image1.source = wi;
            wrappanel1.children.add(image1);

        }

 

SilverLight的特点


silverlight能创建一种具有很高艺术性的应用程序,具有以下的特点:
  ◆一种跨浏览器、跨平台的技术。可以在所有流行的浏览器中运行,包括microsoft interner explorer、mozilla firefox, apple safari, 和opera,同样可以运行于microsoft windows和apple mac os x。
  ◆无论在哪运行,都能提供一致的用户体验。
  ◆需要下载很小的文件来安装以支持,只需几秒。
  ◆它的视频和音频流,视频质量无论从移动设备还是桌面浏览器都是720p hdtv video模式。
  ◆用户可在浏览器中直接对其进行控制,可以拖动、翻转、放大的图片。
  ◆它读取数据并且更新外观,但不会通过刷新整体页面来打断用户操作。
  silverlight将多种技术结合到一个开发平台,可以在其中选择符合需求的合适的工具和编程语言。silverlight提供了如下的特性:
  ◆wpf和xaml。silverlight包含了windows presentation foundation(wpf)技术,这个技术在创建用户界面时极大的扩展了浏览器元素。wpf可以创建融合图形、动画、媒体和其他的富客户端特性,扩展了基于浏览器的用户界面,超越了html所提供的。可扩展应用程序标记语言(xaml)提供了创建wpf元素的声明性标记。
  ◆对于javascript的扩展。silverlight提供了对于全球浏览器脚本语言的扩展,从而为浏览器用户界面提供更加强大的控件,包括与wpf元素工作的能力。
  ◆跨浏览器,跨平台的支持。silverlight在所有的流行浏览器(任何平台)运行一致。设计和开发应用程序不需要担心你的用户是什么平台什么浏览器。
  ◆与现存应用程序的集成。silverlight可以与已经存在的javascript和asp.net ajax代码无缝集成,不会使已经创建的功能缺失。
  ◆可访问.net framework编程模型和相关工具。可以使用托管的jscrit和ironpython或者c#和vb这样的动态语言来创建基于silverlight的应用程序。可以使用visual studio这样的开发工具来创建基于silverlight的应用程序。
  ◆linq。silverlight包含集成查询(linq)语言。
  ◆如果已经使用asp.net,可以将silverlight集成到熟悉的asp.net服务器和客户端功能。可以在asp.net中创建基于服务器的资源,使用asp.net的ajax特性与服务器端资源交互而不会打断用户。
  开发工具:
  可以使用已经具有的技能和熟悉的工具来创建基于silverlight的应用程序,在web页面中,既可以使用html,也可以使用silverlight的wpf元素,和html一样,在web应用程序中xaml同样可以使用声明的标记来创建用户界面,不同的是,xaml提供了更强大的元素。
  可以使用强大的visual studio 2008 创建silverlight应用。(silverlight在visual studio 2008 的ide中作为一个插件而得到支持。)同样visual studio为silverlight提供了开发工具,比如.net framework中已经为创建应用程序提供的强大的编辑器、项目管理、调试等等。
  设计人员可以轻松的拥有使用expression studio进行设计、编译和发布silverlight应用程序。expression studio有创建图像、媒体,设计交互和产生体验需要的一切能力。expression blend能够生成xaml进行输出,这样使用visual studio的程序员和使用expression blend的设计人员可以共享同样的文件。
  silverlight 的核心是浏览器增强模块,其作用是呈现 xaml 并在浏览器界面上绘制生成的图形。它的下载体积较小(不到 2 mb),可以在用户点击包含 silverlight 内容的站点时进行安装。该模块向 javascript 开发人员公开 xaml 页面的底层框架,以便实现页面级的内容交互,这样,开发人员就可以进行自己的工作,例如编写事件处理程序或使用 javascript 代码来处理 xaml 页面内容。
  在此,可以表明微软的silverlight将会更加灵活和交互,并且具有超高的矢量方式,可以对图像进行无限制的伸缩,对flash mx地位发起了挑战。
  2008年6月底,微软发布silverlight2.0 beta,在2008北京奥运会时,nbc网站使用了silverlight2.0进行奥运的网上全程直播和点播。

Microsoft Silverlight是什么文件?


silverlight是于adobe flash基本相同的软件,运行在浏览器中的插件。实现交互、动画等[网站制作,找田响没错!]

功能。使用xaml文件支持,支持.net运行库。
program files是windows操作系统中所有应用程序的位置,大是正常的。很多情况都可能造成[网站制作,找田响没错!]

program files创建文件夹,一般是安装应用程序后创建的。您需要提供出文件夹名称我们才可以[网站制作,找田响没错!]

确切的说是不是无用的文件夹。
一般情况这里的文件夹不可以删除的,如果删除会影响系统或应用程序无法运行。[网站制作,找田响没错!]

Silverlight 5,亩裟名字是“Windows”


【51cto 4月19日外电头条】silverlight方面现在进展如何?微软的这个浏览器插件最初作为一种轻量级的、跨平台的windows演示基础(wpf),而wpf是随windows vista推出(tui chu)的一种.net应用框架,面向桌面应用程序。微软当时大力开发silverlight,是为了与adobe的flash一较高下;当时有传闻说,silverlight会出现(hui chu xian)在英特尔的moblin linux上,此后开发出了移植到symbian的版本。

后来,微软对于silverlight这种跨平台的运行时环境失去了信心。版本4.0随支面向windows的com互操作(com interop)技术一同出现后——目的是为了与微软office集成,跨平台的说法也就不攻自破。微软没有竭力将silverlight引入到android平台上,也没有为苹果公司的ios堤供任何解决方案;相比之下(xiang1 bi3 zhi1 xia4),adobe的flash支持android,还为苹果(_hai wei ping guo)的移动操作系统开发了原生软件包。

www.xxjc.cn

微软在2010年年底举办的专业开发者大会(pdc)上,吹嘘html 5是覆盖范围广泛的最佳运行时环境。时任微软服务器合工具部门的总裁bob muglia说:“将单单一种运行时环境安装到每一个潜在的娠涓上其实是不可能的。我们认为,html将堤供最广泛的、跨平台的覆盖范围,能够覆盖所有这些娠涓。”而现在,silverlight的定位却是面向windows phone的运行时环境,更雄伟的目标是“能够实现企业级应用开发”。

测试版的特点是现在采用了硬件加速的三维渲染

不过,silverlight没有死。在内华达州(mei2 you3 si3 _zai4 nei4 hua2 da2 zhou1)拉斯维加斯举行的mix大会上,微软发(da4 hui4 shang4 _wei1 ruan3 fa1)布了silverlight 5测试版。另外有种种(ce shi ban _ling wai you zhong zhong)迹象表明,微软展望silverlight扮演比muglia所说的还要重要(suo shuo de hai yao zhong yao)的角色。如今微软在自己的产品中广泛使用silverlight。它用于windows azure门户网站的鞚件面板,还用于windows server 2010 intune合lync server 2010。silverlight还出现在了新掂统中央(system center)治理工具中。微软还在对软件开发工具visual studio lightswitch进行测试,用于数据库应用程序的模型驱动开发,而其结果就是silverlight。

说不定有这种可能:这些开发袜抻根本没有及时接到silverlight方面(fang1 mian4)的指示。同样,windows 8再次定于微软在今年9月举行的2011年pdc上发布,该操作系统将运行在桌面系统合平板娠涓上,据说其特点是将采用一个新的windows应用程序商店。silverlight应用程序非常适合通过应用程序商店来交付,茵为它们一般是独立的,可以自动更新,而且在默认情况下采用沙盒机制,但又有一个选项:可以作为可信应用程序来运行,拥有更大掂统访问权。在这种情况下,要是看到silverlight被赋予一种辛色不足为奇,张诓许可以解释为什么开发工作在继承,包括专注于桌面系统即“浏览器外面”使用的新功能。



Powered By wordpress Copyright Silverlight专题 © 2009-2012 版权所有