[WPF][Silverlight] Binding in WPF and Silverlight – (二)使用Visual Studio和Blend

  • 4135
  • 0
  • C#
  • 2013-07-14

上篇講到了怎麼使用C#進行Binding的設定,這次就來說說透過工具產生的XAML就做到Binding設定的方法。
其實要透過XAML進行Binding是非常的簡單的,只要透過Visual Studio 2010或是Blend 4,滑鼠點個幾下,就可以設定完成,我們沿用上次的範例,分別針對以Visual Studio 2010和Blend 4來介紹Binding的設定方式。


上篇講到了怎麼使用C#進行Binding的設定,這次就來說說透過工具產生的XAML就做到Binding設定的方法。
其實要透過XAML進行Binding是非常的簡單的,只要透過Visual Studio 2010或是Blend 4,滑鼠點個幾下,就可以設定完成,我們沿用上次的範例,分別針對以Visual Studio 2010和Blend 4來介紹Binding的設定方式。

Visual Studio 2010:

在Properties Window中找到要Binding的屬性,以之前的例子而言,我們要Binding的目標是TextBlock的Text屬性,所以先在Common類裡找到Text屬性,而在Text欄位的左邊會有一個Advanced Properties小方框,如下圖:
clip_image002[15]

點擊之後選取Apply Data Binding...
clip_image004[10]

接著在Source設定項目中選取ElementName -> calCalendar
clip_image006[7]

Path
選取SelectedDate
clip_image008[7]

Options
裡面的Mode改為OneWay
clip_image010[8]

設定好就搞定啦。


Blend 4:

一樣是在Common Properties裡面找到Text這個Property,不過不太一樣的是Blend的Advanced options位置在欄位的右邊
clip_image012[4]

一樣點下Advanced options鈕,再來選取Data Binding...
clip_image014[4]

接著會跳出一個Create Data Binding視窗,這邊就跟Visual Studio呈現的方式不太一樣了,我們切換到Element Property頁籤,在左邊的Scene elements裡面挑選calCalendar並在右邊的Properties中挑選SelectedDate,下面有個箭頭可以點開的面版,點開之後把Binding direction設為One Way,然後按下OK鈕,搞定!
clip_image016[4]

不過!!!!Blend 4還有另一個更直覺的設定方式,就是使用Element Property Binding
clip_image018[4]

點選Element Property Binding...之後,滑鼠游標會變成一個箭頭,右邊有個像標靶的型狀,只要把游標移到你要綁定的Source上(中間的設計區裡的項目或是Objects and Timeline裡的項目皆可),就會出現以下的對話視窗,只要在裡面挑選要Binding的Property即可。
clip_image020[4]

 

設定完成之後,看看MainPage.xaml檔,應該會變為如下的樣子:

MainPage.xaml

<UserControl x:Class="SilverlightDataBinding.MainPage"
    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:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
    mc:Ignorable="d"
    d:DesignWidth="800" d:DesignHeight="600"
    Width="Auto" Height="Auto">

    <Grid x:Name="LayoutRoot" Background="Transparent">
        <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
            <sdk:Calendar HorizontalAlignment="Center" Name="calCalendar" Width="Auto"/>
            <TextBox Height="23" HorizontalAlignment="Stretch" Name="txtDate" Width="Auto" />
        </StackPanel>
    </Grid>
</UserControl>

看看txtDate的Text Property,是不是有點似曾相識呢?ElementName指的就是之前說的Source,Path當然就是之前說的Path囉!!相信聰明的你,看了上面的XAML就知道怎麼直接透過XAML就做到Binding了吧,連一行程式都不用寫呢!!下次再來跟各位說說Binding方向和Converter可以怎麼運用,下次見!!