不負責任講座 Silverlight 3.0 #3,Binding(DataBinding?資料繫結?資料綁定?)

摘要:不負責任講座 Silverlight 3.0 #3,Binding(DataBinding?資料繫結?資料綁定?)

 

因為 Silverlight 3.0,我也是第一次接觸,(1.0 / 2.0版我都沒有碰過)

為了避免我個人的解釋或測試過程,出現錯誤

所以名為「不負責任講座」。

 

 

之前在 ASP.NET有提及一個很重要的觀念與應用,那就是「DataBinding?資料繫結?資料綁定?」

我寫了一系列的文章,有興趣的朋友可以去看看。

請看: DataBinding?資料繫結?資料綁定? ...

 

在 Silverlight裡面,也有 Binding這樣的觀念與動作。

本範例就是要簡單地解釋這個觀念。

本範例的參考資料,源自 http://msdn.microsoft.com/zh-tw/library/cc838207(VS.95).aspx

 

首先,我們先新增一個 Silverlight檔案,名為 Page2.xaml

      最上方的 x:Class 與 xmlns:my,請依照實際情況修改、或自行新增

      跟我們開啟VS 2008的專案名稱有關。

<navigation:Page xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"  x:Class="SilverlightApplication2_Browser.Page2" 
           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"
           xmlns:my="clr-namespace:SilverlightApplication2_Browser"
           mc:Ignorable="d"
           xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
           d:DesignWidth="640" d:DesignHeight="480"
           Title="Page2 Page">
           <!-- 重點在於上面這兩行 xmlns:my="" 與 x:Class="" -->
           
    <Grid x:Name="LayoutRoot">
        <Grid.Resources>
           <my:Dog x:Name="MyDog" DogName="皮皮" DogSize="大型犬"/>
        </Grid.Resources>

       <!-- 預設的資料來源  <my:Dog>,其中的 my: 就是上方的 xmlns:my -->

        <ScrollViewer x:Name="PageScrollViewer" Style="{StaticResource PageScrollViewerStyle}">

            <StackPanel x:Name="ContentStackPanel">

                <TextBlock x:Name="HeaderText" Style="{StaticResource HeaderTextStyle}" Text="Page2"/>
                <TextBlock x:Name="ContentText" Style="{StaticResource ContentTextStyle}" Text="Silverlight + Binding"/>
                <TextBlock Text="{Binding DogName, Mode=OneTime}" DataContext="{StaticResource MyDog}" FontSize="20" />
                <TextBlock Text="{Binding DogSize, Mode=OneTime}" DataContext="{StaticResource MyDog}" FontSize="20" />

            </StackPanel>          

        </ScrollViewer>       
    </Grid>

</navigation:Page>

上述的 Binding動作,裡面有提到 Mode = OneTime。

 

我個人的說法是,這些東西在 ASP.NET / ADO.NET也有用過「資料繫結運算式」,例如:

<%# Bind(" ") %>  (雙向繫結)  或是  <%# Eval(" ") %> (單向繫結),觀念應該很類似吧?

 

 關於上述的觀念,我有另一篇文章說明 ---- 不負責任講座 Silverlight 3.0 #4,Binding(何謂One-Time / One_Way / Two-Way)

關於上面程式與標籤,裡面有提到 DataContext這個東西,可以參閱 ---- ASP.NET AJAX 4有什麼新玩意?

 

================================================================================== 

這個程式,雖然資料來源、資料繫結,統統寫在 .xaml檔案裡面。

但後置程式碼,仍需要為這個資料來源,設定類別(Class)

只有下半部的程式,是自己加入的。     上半部的程式,原封不動。

01
02 Partial Public Class Page2
03     Inherits Page
04
05     Public Sub New()
06         InitializeComponent()
07     End Sub

08
09     '使用者巡覽至這個頁面時執行。
10     Protected Overrides Sub OnNavigatedTo(ByVal e As System.Windows.Navigation.NavigationEventArgs)
11
12     End Sub

13
14 End Class
15
16 '=================================================
17 '== 自己設定的 Class
18 '== 參考資料  http://msdn.microsoft.com/zh-tw/library/cc838207(VS.95).aspx
19 Public Class Dog
20
21     Private _DogName As String
22     Private _DogSize As String
23
24     Public Property DogName() As String
25         Get
26             Return _DogName
27         End Get
28         Set(ByVal value As String)
29             _DogName = value
30         End Set
31     End Property
32
33     Public Property DogSize() As String
34         Get
35             Return _DogSize
36         End Get
37         Set(ByVal value As String)
38             _DogSize = value
39         End Set
40     End Property
41 End Class

如果要使用 C#的範例,請參閱下列的微軟網站。

 

微軟的官方文件,針對這個範例,還有提供「資料來源寫在後置程式碼」的版本,很有參考價值。

請看:http://msdn.microsoft.com/zh-tw/library/cc838207(VS.95).aspx

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程教學,遠距教學 (Web Form 約51hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程教學,遠距教學 (ASP.NET MVC 約75~88hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

         累積時數約 75~ 88小時...... 第一天(5.5小時)完整內容,"免費"讓您評估