#眉標=Silverlight #副標=Silverlight開發技術(9) #大標=建立Silverlight 2.0的User Control #作者=文/圖 董大偉 ============= 程式1 UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="SilverlightApplication1.TrafficLights" d:DesignWidth="640" d:DesignHeight="480"> ================          ============= 程式2 ================ ===<反灰>============= ================ ===<反灰>============= xmlns:uc="clr-namespace:SilverlightApplication1" xmlns:euc="clr-namespace:SilverlightApplication1;assembly=SilverlightApplication1" ================ ============= 程式3 '列舉型別-燈號 Enum LightSign none red green yellow End Enum 'Property Light Dim _Light As LightSign '保留燈號 '設定與回傳燈號 Public Property Light() As LightSign Get Return _Light End Get Set(ByVal value As LightSign) _Light = value '燈全開 Me.Red_Light.Opacity = 1 Me.Yellow_Light.Opacity = 1 Me.Green_Light.Opacity = 1 '設定燈全暗 If value = LightSign.none Then Me.Red_Light.Opacity = 0.3 Me.Yellow_Light.Opacity = 0.3 Me.Green_Light.Opacity = 0.3 End If '設定亮綠燈 If value = LightSign.green Then Me.Red_Light.Opacity = 0.3 Me.Yellow_Light.Opacity = 0.3 End If '設定亮紅燈 If value = LightSign.red Then Me.Green_Light.Opacity = 0.3 Me.Yellow_Light.Opacity = 0.3 End If '設定亮黃燈 If value = LightSign.yellow Then Me.Red_Light.Opacity = 0.3 Me.Green_Light.Opacity = 0.3 End If End Set End Property ================ ===<反灰>============= 'Method-設定燈號 Public Sub SetLight(ByVal L As LightSign) Me.Light = L End Sub ================ ============= 程式4 '按鈕被按下時輪流切換各種顏色的燈號 Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click '取得目前燈號 Dim v As Integer = TrafficLights1.Light v += 1 '加一 '超過最大燈號則歸零 If v > TrafficLights.LightSign.yellow Then v = 0 '設定燈號 TrafficLights1.SetLight(v) End Sub '場景載入時把燈號設為黃色 Private Sub Page_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded Me.TrafficLights1.Light = TrafficLights.LightSign.yellow End Sub ============= 程式五 '燈號被按下 Event OnClick() 'Method-設定燈號 Public Sub SetLight(ByVal L As LightSign) Me.Light = L End Sub Private Sub Green_Light_MouseLeftButtonDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles Green_Light.MouseLeftButtonDown '綠燈被按下 Me.Light = LightSign.green RaiseEvent OnClick() End Sub Private Sub Red_Light_MouseLeftButtonDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles Red_Light.MouseLeftButtonDown '紅燈被按下 Me.Light = LightSign.red RaiseEvent OnClick() End Sub Private Sub Yellow_Light_MouseLeftButtonDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles Yellow_Light.MouseLeftButtonDown '黃燈被按下 Me.Light = LightSign.yellow RaiseEvent OnClick() End Sub ================ ============= 程式6 '當燈號被按下 Private Sub TrafficLights1_OnClick() Handles TrafficLights1.OnClick '在TextBox當中顯示目前燈號 Me.TextBox1.Text = "燈號切換成:" & Me.TrafficLights1.Light.ToString End Sub ================