...ii...iii...x 1 Silverlight 1-1 Silverlight...1-2 1-1.1...1-5 1-1.2.NET Framework for Silverlight...1-5 1-2 Silverlight...1-6 1-3 Silverlight...1-7 1-4 Silverlight...1-10 1-5 Silverlight...1-10 1-6...1-11 2 2-1 Visual Studio Silverlight...2-2 2-2 Blend 2...2-2 2-3 IIS Silverlight...2-3 2-4...2-4 3 Silverlight 3-1 Silverlight 2.0...3-2 3-2...3-5 3-3 Silverlight...3-8 3-4 Silverlight...3-9
3-5.xap Debug Release...3-13 3-6 Silverlight Silverlight...3-17 1 Silverlight Silverlight...3-20 2 Silverlight XAML...3-22 3 Silverlight Silverlight...3-23 4 AJAX Control Tookit Silverlight...3-25 3-7 Silverlight...3-27 3-8 Silverlight...3-29 Silverlight...3-31 3-9 HTML Silverlight...3-31 <object> Silverlight...3-32 3-10 Silverlight...3-35 3-10.1.xap...3-35 3-10.2.xap...3-44 Silverlight.dll...3-45 3-11 Silverlight...3-51 3-12...3-73 3-12.1...3-73...3-78 3-12.2...3-78 Silverlight...3-79 3-12.3...3-82...3-83 3-12.4...3-88 3-13...3-92 4 4-1...4-2 4-2 Startup...4-3 4-3...4-4 1 Silverlight...4-5 2 Silverlight...4-8 xii
3 Silverlight...4-10 4...4-13 5...4-14 4-4 Silverlight...4-16 Silverlight...4-17 4-5 Exit...4-19 4-6...4-20...4-20 4-7...4-25...4-26 4-8 Silverlight...4-27 4-9 Silverlight...4-27 1 Silverlight...4-29 2 Silverlight...4-31 5 5-1...5-2 5-2 XAML...5-4 5-3 x:class...5-4 5-4 XAML...5-6 5-5 XAML...5-8 5-6 Grid...5-8 Grid XAML...5-11 5-7 StackPanel...5-13 StackPanel...5-14 5-8 Canvas...5-16 5-9 Border...5-17 Border...5-18 5-10...5-21...5-22 5-11 XAML Z...5-24 1 XAML Z...5-25 xiii
2...5-27 5-12 XAML...5-29 1 XAML...5-31 2...5-32 5-13...5-36 6 6-1...6-2 6-1.1 Ellipse Rectangle Line...6-2...6-3 6-1.2 Polygon Polyline Path...6-4 1 Polygon Polyline...6-4 2 Path...6-5 6-2...6-7 1 Ellipse...6-9 2 Line...6-13 6-3...6-15 6-3.1...6-16...6-17 6-3.2...6-18...6-21 6-3.3...6-23 1...6-23 2...6-24 3 Path...6-26 6-3.4...6-27 1...6-28 2 MediaElement VideoBrush...6-28 6-4...6-30 1...6-31 2...6-33 3...6-36 6-5...6-39 xiv
6-5.1 Opacity...6-40...6-40 6-5.2 Visibility...6-40 6-5.3 OpacityMask...6-41 1...6-41 2...6-43 3...6-44 4...6-46 6-5.4 Clip...6-46...6-46 6-6 Transform...6-47 6-6.1...6-48 1...6-49 2...6-49 6-6.2...6-50...6-51 6-6.3...6-51...6-52 6-6.4...6-53 6-6.5...6-53...6-54 6-6.6...6-55...6-56 6-7 Blend 2...6-56 6-8...6-60 1...6-62 2...6-66 3...6-71 6-9...6-74 7 7-1 Blend 2...7-2...7-2 xv
7-2...7-3 7-3 Blend 2...7-3 1...7-5 2...7-8 7-4 From/To/By...7-12...7-12 7-5...7-15 1...7-16 2...7-18 7-6 Storyboard...7-20...7-21 7-7 DispatcherTimer...7-23 1...7-24 2...7-26 7-8 Visual Basic...7-28 7-9...7-29 8 8-1...8-2 8-2 TextBlock...8-5 8-2.1...8-5 TextBlock...8-6 8-2.2 TextBlock...8-6 TextBlock...8-6 8-2.3 TextBlock...8-7 1...8-8 2...8-9 8-2.4...8-9...8-10 8-2.5...8-10...8-11 8-3 TextBox...8-11 1 TextBlox...8-11 xvi
2 XML LINQ to XML...8-13 3 SQL Server.ashx...8-18 4 SQL Server WCF...8-23 8-4 PasswordBox...8-26 8-5 Button...8-27 1...8-28 2 Button ClickMode...8-32 8-6 HyperlinkButton...8-32 1...8-33 2 Navigate PopupWindow...8-35 8-7 RepeatButton...8-37 RepeatButton...8-37 8-8 Tooltip...8-37...8-38 8-9 Image...8-40 1.ashx...8-41 2.zip...8-46 3 SQL Server...8-51 8-10 CheckBox...8-53 CheckBox...8-54 8-11 ToggleButton...8-55 8-12 RadioButton...8-55 1 RadioButton...8-56 2 SQL Server...8-58 8-13...8-61 9 9-1 GridSplitter...9-2 GridSplitter Grid...9-5 9-2 Calendar...9-7 1 Calendar...9-11 2 TextBox Calendar...9-13 xvii
9-3 DatePicker...9-14 DatePicker...9-16 9-4 ListBox...9-17 9-4.1 ListBoxItem...9-17 1 ListBoxItem ListBox...9-18 2...9-19 9-4.2 FrameworkElement...9-21 FrameworkElement ListBox...9-24 9-4.3 ListBox...9-26 1 ItemsSource...9-27 2 ItemsSource...9-28 3 ItemTemplate DataTemplate...9-31 4 XML...9-32 5...9-36 6 ListBox...9-46 7 ListBox...9-49 9-5 ComboBox...9-51 1...9-52 2...9-55 9-6 ProgressBar...9-56...9-56 9-7 Popup...9-60...9-62 9-8 ScrollViewer...9-64 1...9-64 2...9-68 9-9 Slider...9-69 1...9-69 2...9-73 3...9-76 9-10 TabControl...9-79 1 TabControl...9-81 2 TabControl...9-86 xviii
9-11...9-88 10 DataGrid 10-1 DataGrid...10-2 10-2 DataGrid...10-2 1 DataGrid...10-4 2 XAML DataGrid...10-8 3 DataGrid...10-11 4 DataGridTemplateColumn DataGrid...10-14 5 AutoGeneratingColumn DataGrid...10-19 6 ItemsSource...10-22 10-3 DataGrid ComboBox...10-23 10-4 DataGrid...10-27 1...10-28 2...10-36 3 DataGrid...10-38 10-5 DataGrid...10-39 DataGrid...10-40 10-6 DataGrid...10-43 1 DataGrid...10-44 2 DataGrid WCF...10-49 10-7...10-58 11 11-1...11-2 11-2...11-14 11-3...11-34 xix
12 12-1...12-2 12-2...12-2 1 Button...12-3 2...12-5 12-3...12-8 12-4...12-10 12-5...12-11 12-6...12-12 12-7...12-12 12-8...12-19 12-9 Silverlight Toolkit...12-21 12-10 Silverlight Toolkit...12-23 12-11...12-26 13 13-1...13-2 13-2...13-3 13-2.1 XAML...13-3 1 XAML...13-8 2...13-8 13-2.2...13-9 1...13-11 2...13-15 13-3...13-17 1 SQL Server...13-17 2...13-23 13-4...13-25...13-26 13-5...13-32 1...13-36 2...13-40 13-6...13-40 xx
14 14-1 MediaElement...14-2 14-2...14-5 14-2.1...14-5 14-2.2 MediaElement...14-7 14-2.3...14-9 1...14-9 2...14-11 3...14-15 14-3...14-26 MediaElement...14-27 14-4 SetSource...14-27 WebClient...14-28 14-5 Timeline Markers...14-30...14-32 15 15-1 HTTP...15-2 15-2...15-3 15-3...15-4 15-3.1 Silverlight Web...15-6 15-3.2 Silverlight...15-9 15-3.3 Adobe Flash Flex...15-12 15-4 HTTP...15-13 15-5 Proxy HTTP...15-14 15-5.1 Silverlight WCF...15-15 1 WCF...15-16 2 WCF XML...15-23 3 WCF XML...15-28 4 WCF WCF...15-32 5 WCF SQL Server...15-33 6 DataGrid WCF...15-37 xxi
7 ASP.NET...15-41 8 WCF...15-54 9 WCF SQL Server...15-60 15-5.2.asmx Web...15-67 1 Web.asmx...15-67 2 Web.asmx XML...15-69 3 Microsoft Live Search Web.asmx...15-74 15-5.3 ADO.NET...15-78 ADO.NET...15-80 15-6...15-87 16 16-1...16-2...16-2 16-2...16-5...16-6 16-3...16-11...16-11 17 1 WebClient UploadStringAsync...17-4 2 WebClient OpenWriteAsync...17-6 3...17-9 17-A...17-11 A...A-2 SQL Server 2005 Express Edition...A-2...A-2 Silverlight XAML...A-3 xxii
ASP.NET Windows Form Silverlight XAML Image 10 XAML CH10_DemoForm003.xaml DataGrid 11-1 CH11 SilverlightToolBar.aspx Silverlight SilverlightToolBar 11-1 Silverlight SilverlightToolBar UserControl XAML SilverlightToolBar.xaml SilverlightToolBar. xaml.vb 11-2
11-1 11-3
SilverlightToolBar.xaml <UserControl x:class="silverlighttoolbar.silverlighttoolbar" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="821.5" Height="154"> <Canvas> <Image x:name="book1image" Source="Images/BookBanner1.png" ToolTipService.ToolTip= " ASP.NET 3.5 / VB " Cursor="Hand" MouseEnter="HandleMouseEnter" MouseLeave="HandleMouseLeave" MouseLeftButtonUp="BookImage_MouseLeftButtonUp" Width="96" Height="96" Canvas.Left="13.5"> <Image.RenderTransform> <ScaleTransform x:name="book1scale" CenterX="64" CenterY="64"> </ScaleTransform> </Image.RenderTransform> </Image> <TextBlock Foreground="#FF573AD7" Text=" ASP.NET 3.5 / VB" Canvas.Left="3.997" Canvas.Top="105" TextWrapping="Wrap" Width="110"> </TextBlock> <Image x:name="book2image" Source="Images/BookBanner2.png" ToolTipService.ToolTip= " ASP.NET 3.5 / VC# " Cursor="Hand" MouseEnter="HandleMouseEnter" MouseLeave="HandleMouseLeave" MouseLeftButtonUp="BookImage_MouseLeftButtonUp" Width="96" Height="96" Canvas.Left="153.5"> <Image.RenderTransform> <ScaleTransform x:name="book2scale" CenterX="64" CenterY="64"> </ScaleTransform> </Image.RenderTransform> </Image> <TextBlock Text=" ASP.NET 3.5 / VC#"...> </TextBlock> 11-4
<Image x:name="book3image" Source="Images/BookBanner3.png" ToolTipService.ToolTip= " ASP.NET 3.5 AJAX / VB " Cursor="Hand" MouseEnter="HandleMouseEnter" MouseLeave="HandleMouseLeave" MouseLeftButtonUp="BookImage_MouseLeftButtonUp" Width="96" Height="96" Canvas.Left="293.5"> <Image.RenderTransform> <ScaleTransform x:name="book3scale" CenterX="64" CenterY="64"> </ScaleTransform> </Image.RenderTransform> </Image> <TextBlock Text=" ASP.NET 3.5 AJAX / VB"...> </TextBlock> <Image x:name="book4image" Source="Images/BookBanner4.png" Width="96" ToolTipService.ToolTip= " ASP.NET 3.5 AJAX / VC# " Cursor="Hand" MouseEnter="HandleMouseEnter" MouseLeave="HandleMouseLeave" MouseLeftButtonUp="BookImage_MouseLeftButtonUp" Height="96" Canvas.Left="433.5"> <Image.RenderTransform> <ScaleTransform x:name="book4scale" CenterX="64" CenterY="64"> </ScaleTransform> </Image.RenderTransform> </Image> <TextBlock Text=" ASP.NET 3.5 AJAX / VC#"...> </TextBlock> <Image x:name="book5image" Source="Images/BookBanner5.png" Width="96" ToolTipService.ToolTip= " ASP.NET 3.5 AJAX / VB " Cursor="Hand" MouseEnter="HandleMouseEnter" MouseLeave="HandleMouseLeave" 11-5
MouseLeftButtonUp="BookImage_MouseLeftButtonUp" Height="96" Canvas.Left="573.5"> <Image.RenderTransform> <ScaleTransform x:name="book5scale" CenterX="64" CenterY="64"> </ScaleTransform> </Image.RenderTransform> </Image> <TextBlock Text=" ASP.NET 3.5 AJAX / VB...> </TextBlock> <Image x:name="book6image" Source="Images/BookBanner6.png" Width="96" ToolTipService.ToolTip= " ASP.NET 3.5 AJAX / VC# " Cursor="Hand" MouseEnter="HandleMouseEnter" MouseLeave="HandleMouseLeave" MouseLeftButtonUp="BookImage_MouseLeftButtonUp" Height="96" Canvas.Left="713.5"> <Image.RenderTransform> <ScaleTransform x:name="book6scale" CenterX="64" CenterY="64"> </ScaleTransform> </Image.RenderTransform> </Image> <TextBlock Text=" ASP.NET 3.5 AJAX / VC#"...> </TextBlock> </Canvas> </UserControl> SilverlightToolBar.xaml.vb 11-6
SilverlightToolBar.xaml.vb Option Strict On Imports System.Windows.Browser.HtmlPage Partial Public Class SilverlightToolBar Inherits UserControl Private _book1dir As Integer = -1 Private _book1mouseover As Boolean = False Private _book1timer As Storyboard Private _book2dir As Integer = -1 Private _book2mouseover As Boolean = False Private _book2timer As Storyboard Private _book3dir As Integer = -1 Private _book3mouseover As Boolean = False Private _book3timer As Storyboard Private _book4dir As Integer = -1 Private _book4mouseover As Boolean = False Private _book4timer As Storyboard Private _book5dir As Integer = -1 Private _book5mouseover As Boolean = False Private _book5timer As Storyboard Private _book6dir As Integer = -1 Private _book6mouseover As Boolean = False Private _book6timer As Storyboard Public Sub New() InitializeComponent() _book1timer = New Storyboard() _book1timer.duration = TimeSpan.FromMilliseconds(50.0) 11-7
AddHandler _book1timer.completed, AddressOf Book1Timer _book2timer = New Storyboard() _book2timer.duration = TimeSpan.FromMilliseconds(50.0) AddHandler _book2timer.completed, AddressOf Book2Timer _book3timer = New Storyboard() _book3timer.duration = TimeSpan.FromMilliseconds(50.0) AddHandler _book3timer.completed, AddressOf Book3Timer _book4timer = New Storyboard() _book4timer.duration = TimeSpan.FromMilliseconds(50.0) AddHandler _book4timer.completed, AddressOf Book4Timer _book5timer = New Storyboard() _book5timer.duration = TimeSpan.FromMilliseconds(50.0) AddHandler _book5timer.completed, AddressOf Book5Timer _book6timer = New Storyboard() _book6timer.duration = TimeSpan.FromMilliseconds(50.0) AddHandler _book6timer.completed, AddressOf Book6Timer _book1timer.begin() _book2timer.begin() _book3timer.begin() _book4timer.begin() _book5timer.begin() _book6timer.begin() End Sub ' Private Function AdjustScale(ByVal direction As Integer, _ ByVal scale As ScaleTransform, ByVal mouseover As Boolean, _ ByVal timer As Storyboard) As Integer If direction = 1 Then If scale.scalex < 1.3 Then scale.scalex += 0.05 scale.scaley += 0.05 11-8
ElseIf Not mouseover Then direction = 0 End If ElseIf scale.scalex > 1 Then scale.scalex -= 0.05 scale.scaley -= 0.05 End If timer.begin() Return direction End Function ' Public Sub Center(ByVal appwidth As Double, ByVal appheight As Double) Dim num = appwidth / 2 - Me.Width / 2 Dim num2 = appheight / 2 - Me.Height / 2 Me.SetValue(Canvas.LeftProperty, num) Me.SetValue(Canvas.TopProperty, num2) End Sub ' Private Sub HandleMouseEnter(ByVal sender As System.Object, _ ByVal e As System.Windows.Input.MouseEventArgs) Select Case CType(sender, Image).GetValue(NameProperty).ToString() Case "Book1Image" _book1mouseover = True _book1dir = 1 Case "Book2Image" _book2mouseover = True _book2dir = 1 Case "Book3Image" _book3mouseover = True _book3dir = 1 Case "Book4Image" _book4mouseover = True _book4dir = 1 Case "Book5Image" _book5mouseover = True 11-9
_book5dir = 1 Case "Book6Image" _book6mouseover = True _book6dir = 1 End Select End Sub ' Private Sub HandleMouseLeave(ByVal sender As System.Object, _ ByVal e As System.Windows.Input.MouseEventArgs) Select Case CType(sender, Image).GetValue(NameProperty).ToString() Case "Book1Image" _book1mouseover = False Case "Book2Image" _book2mouseover = False Case "Book3Image" _book3mouseover = False Case "Book4Image" _book4mouseover = False Case "Book5Image" _book5mouseover = False Case "Book6Image" _book6mouseover = False End Select End Sub ' Private Sub BookImage_MouseLeftButtonUp( _ ByVal sender As System.Object, _ ByVal e As System.Windows.Input.MouseButtonEventArgs) Dim bn = String.Empty Select Case CType(sender, Image).GetValue(NameProperty).ToString() Case "Book1Image" bn = "ACL025600" Case "Book2Image" bn = "ACL025700" Case "Book3Image" 11-10
bn = "ACL025800" Case "Book4Image" bn = "ACL025900" Case "Book5Image" bn = "ACL026000" Case "Book6Image" bn = "ACL026100" End Select Window.Navigate(New Uri( _ "http://www.gotop.com.tw/waweb2004/main/" & _ "home.aspx?pg=hm010x2007&bn=" & bn, UriKind.Absolute), _ "_blank") End Sub Private Sub Book1Timer(ByVal sender As Object, ByVal e As EventArgs) _book1dir = AdjustScale(_book1Dir, Book1Scale, _book1mouseover, book1timer) End Sub Private Sub Book2Timer(ByVal sender As Object, ByVal e As EventArgs) _book2dir = AdjustScale(_book2Dir, Book2Scale, _book2mouseover, book2timer) End Sub Private Sub Book3Timer(ByVal sender As Object, ByVal e As EventArgs) _book3dir = AdjustScale(_book3Dir, Book3Scale, _book3mouseover, book3timer) End Sub Private Sub Book4Timer(ByVal sender As Object, ByVal e As EventArgs) _book4dir = AdjustScale(_book4Dir, Book4Scale, _book4mouseover, book4timer) End Sub Private Sub Book5Timer(ByVal sender As Object, ByVal e As EventArgs) _book5dir = AdjustScale(_book5Dir, Book5Scale, _book5mouseover, book5timer) 11-11
End Sub Private Sub Book6Timer(ByVal sender As Object, ByVal e As EventArgs) _book6dir = AdjustScale(_book6Dir, Book6Scale, _book6mouseover, book6timer) End Sub Page.xaml Silverlight XAML ContentControl SilverlightToolBar <UserControl x:class="silverlighttoolbar.page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="Auto" Height="Auto" Background="{x:Null}"> <Canvas x:name="rootcanvas"> <Canvas.Background> <LinearGradientBrush StartPoint="0.5,0.0" EndPoint="0.5,1.0"> <GradientStop Color="#FF000000" Offset="0"> </GradientStop> <GradientStop Color="#FFFFFFFF" Offset="1"> </GradientStop> <GradientStop Color="#FFC4CE5B" Offset="0.584"/> </LinearGradientBrush> </Canvas.Background> <!-- --> <ContentControl x:name="toolbarcontent"> </ContentControl> </Canvas> </UserControl> Page.xaml Page.xaml.vb SilverlightToolBar Page.xaml ContentControl Silverlight 11-12
Silverlight Resized Private _SlToolbar As SilverlightToolBar Public Sub New() InitializeComponent() ' Silverlight Resized ' Content_Resized AddHandler Application.Current.Host.Content.Resized, _ AddressOf Content_Resized ' SilverlightToolBar _SlToolbar = New SilverlightToolBar() ' SilverlightToolBar ContentControl RootCanvas.Children.Add(_SlToolbar) End Sub Private Sub Content_Resized(ByVal sender As Object, ByVal e As EventArgs) ' Silverlight Dim appwidth = Application.Current.Host.Content.ActualWidth ' Silverlight Dim appheight = Application.Current.Host.Content.ActualHeight ' _SlToolbar.Center(appWidth, appheight) ' RootCanvas.SetValue(FrameworkElement.WidthProperty, appwidth) RootCanvas.SetValue(FrameworkElement.HeightProperty, appheight) End Sub 11-13
11-2 11-2 CH11 SilverlightPhotoAlbum.aspx Silverlight SilverlightPhotoAlbum 11-2 11-3 11-14
11-3 11-4 11-15
11-4 11-5 11-16
11-5 11-3 11-6 11-6 11-17
11-7 11-7 11-18
CH11 Photo Limingch 11-8 Limingch Thumbnail Silverlight 11-8 11-19
9 XAML CH9_DemoForm013.xaml CH9_DemoForm015.xaml CH9_DemoForm017.xaml CH9_DemoForm021.xaml XAML CreatePhotoThumbNail.ashx 11-9 CH11 XML PhotoInformation.xml XML XML PhotoInformation.xml PhotoInformation.xml XML <images> <photo> <thumbnail>/limingch/thumbnail/1_thnumnail.jpg</thumbnail> <large>/limingch/1.jpg</large> <description> </description> </photo>...... <photo> <thumbnail>/limingch/thumbnail/18_thnumnail.jpg</thumbnail> 11-20