概述
Silverlight 2 Beta
1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#,
IronRuby, Ironpython,对JSON、Web
Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight
2系列》文章带您快速进入Silverlight 2开发。
本文为系列文章第七篇,介绍如何在Silverlight 2中使用全屏模式。
实现全屏模式
全屏模式有时候是非常有用的,在Silverlight中,提供了很好的支持。实现起来也非常的简单,其实只有一行代码,编写一个简单的XAML。
<CanvasBackground="#46461F">
x+M3A*C1|DaI4OF0<Buttonx:Name="toggleButton"Background="Red"Width="200"Height="80"ITPUB个人空间@[7O6hl
Canvas.Top="80"Canvas.Left="150"Content="Toggle Full Screen"
4I OxW!TW0FontSize="20"Click="toggleButton_Click"/>
0Sv&P&k8d6RVt0<Imagex:Name="image"Source="smile_6.png"
]*sv2X)B&Y:j"D0Canvas.Top="100"Canvas.Left="40"></Image>
'cY7~\
}Ybl
L+W_0</Canvas>
引入命名空间
usingSystem.Windows.Interop;
在按钮单击事件中添加实现代码。
private voidtoggleButton_Click(objectsender,RoutedEventArgse)ITPUB个人空间N!W(Jc~&`^L;A
{ITPUB个人空间)Km/J7W$D&MW
ContentcontentObject =Application.Current.Host.Content;ITPUB个人空间rh mTFx0H
contentObject.IsFullScreen = !contentObject.IsFullScreen;
C[ ]:ZZ'O0}
获取当前的Silverlight插件“Content”对象,并设置IsFullScreen属性。运行后单击按钮将会变为全屏模式,再次单击按钮(或者按Esc键)返回普通模式。ITPUB个人空间)pPJ?Y Bc

i*a$A/W-K}:[-F0
捕获相关事件
有时候,我们需要在全屏模式和普通模式之间切换时,添加一个其它的代码,这时可以使用事件FullScreenChanged。
publicPage()ITPUB个人空间&Ik4d%Z@r^
{
tyO
Kd"~
cQ-F0InitializeComponent();
bvH6v1F0Application.Current.Host.Content.FullScreenChanged +=newEventHandler(Content_FullScreenChanged);
;M S,rr E4I C!N0A0}
实现事件处理
private voidContent_FullScreenChanged(objectsender,EventArgse)ITPUB个人空间M
MCT@:S1K}/zL
{ITPUB个人空间~ly |,F'I%\]T
ContentcontentObject =Application.Current.Host.Content;ITPUB个人空间[f SJ[Ip
if(contentObject.IsFullScreen)
uD
Gf2}B(`*x0{
b@;_Z8Ap0toggleButton.Background =newSolidColorBrush(Colors.Green);ITPUB个人空间)u)Q#u;I{Ev
toggleButton.Content ="Full Screen Mode";
Eo*}&NQ0[cy'P0}ITPUB个人空间6Y.ni0p&\{W
N
else
Iq ]I*G
h-h,f0{ITPUB个人空间8f7` W.T m
toggleButton.Background =newSolidColorBrush(Colors.Red);
;E[$mr| V7p0toggleButton.Content ="Normal Mode";
)?`%o%Ly0}ITPUB个人空间1Q
q(\bh
}
在普通模式和全屏模式之间切换时,改变按钮的背景色和文字。运行后点击按钮:
ITPUB个人空间*Qx&x
hP切换为普通模式:
ITPUB个人空间!_x8@
Z5r/M%iG/~L
ITPUB个人空间z9j3Aw{ CLITPUB个人空间&z)R3T|
~完整的代码如下:
public partial classPage:UserControlITPUB个人空间0m]qx;t
{
+rv)^'v0q#q0publicPage()
,j!eJ(E^2H2B0{
4r*|}~k6i!k3zf0InitializeComponent();ITPUB个人空间\%?5XsM$T+^
\+r_Z
Application.Current.Host.Content.FullScreenChanged +=newEventHandler(Content_FullScreenChanged);
+~t7t.XCxq0}ITPUB个人空间.u6e`)e6{!WIt/tH
q(b/OwM x_9N:u0private voidtoggleButton_Click(objectsender,RoutedEventArgse)
4h J5N s@;a3L5^0{ITPUB个人空间n[)RAn5`
ContentcontentObject =Application.Current.Host.Content;
U)x?RT1G,]|0contentObject.IsFullScreen = !contentObject.IsFullScreen;
]8A"h.P.a0}
E)|$fx[)Z0
M w
r#| r5jK1c0private voidContent_FullScreenChanged(objectsender,EventArgse)ITPUB个人空间;F\ A/wDP
{
X R0P2Z,^Xj0ContentcontentObject =Application.Current.Host.Content;ITPUB个人空间b9l
DEo;QQS/Z*sQxe
if(contentObject.IsFullScreen)
o-d`MGv0{ITPUB个人空间aP \7@w*?B8fJq!yk
toggleButton.Background =newSolidColorBrush(Colors.Green);ITPUB个人空间4P]BaCL"H'yo1[
toggleButton.Content ="Full Screen Mode";ITPUB个人空间8v+@SUt2|
}ITPUB个人空间 S8w+oF4y.ghy
else
KV0JC]p(PG!S!W0{
(K f*Bi's N_ y0toggleButton.Background =newSolidColorBrush(Colors.Red);ITPUB个人空间Ea yA5?;C Js6T
toggleButton.Content ="Normal Mode";
d|-Hr6B pB0}
"Mu,WwY4pE7]a0}ITPUB个人空间 k)Ew |AVH+q9q
}
结束语
本文简单介绍了Silverlight 2中对于全屏模式的支持,你可以从这里下载本文示例代码。