[WP7] Silverlight Toolkit For Windows Phone

[WP7] Silverlight Toolkit For Windows Phone

AutoCompleteBox

在網頁我們為了簡化使用者輸入的複雜度,所以有時候會提供當使用者輸入某些字元時,自動先幫他尋找一些相關的字串。

 

首先先建立一個基本的Windows Phone App,加入Microsoft.Phone.Controls.Toolkit.dll。

image

 

接下來在頁面宣告AutoCompleteBox控制項:

<!--ContentPanel - 其他內容置於此-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <TextBlock Text="請輸入查詢字串:" />
    <toolkit:AutoCompleteBox Name="txtAutoComplete" VerticalAlignment="Top" Margin="0,12"/>
</Grid>

 

然後在應用程式啟動的時候,指定ItemsSource即可。如果你想要讓他自動完成,可以啟用IsTextCompletionEnabled、想要變更搜尋字串的方式(不是從第一個字元開始比對),可以修改FilterMode。

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
    List<string> list = new List<string>();
    list.Add("Monday");
    list.Add("Tuesday");
    list.Add("Wednesday");
    list.Add("Thursday");
    list.Add("Friday");
    list.Add("Saturday");
    list.Add("Sunday");

    txtAutoComplete.ItemsSource = list;
}

image

另外,他可以自己定義項目的樣版,如果今天需要在每個選項下面再加上一些說明文字,就可以這樣利用:(資料來源可以直接用簡單的Dictionary)

 

<toolkit:AutoCompleteBox
    InputScope="Url"
    Margin="-6,146,6,0"
    Name="txtAutoComplete2"
    ValueMemberPath="Key" Height="77" VerticalAlignment="Top">
    <toolkit:AutoCompleteBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Margin="0,7">
                <TextBlock
                    Margin="8,0"
                    Text="{Binding Key}"/>
                <TextBlock
                    FontSize="{StaticResource PhoneFontSizeNormal}"
                    Foreground="#ff666666"
                    Margin="8,-6,8,2"
                    Text="{Binding Value}"/>
            </StackPanel>
        </DataTemplate>
    </toolkit:AutoCompleteBox.ItemTemplate>
</toolkit:AutoCompleteBox>

 

 

Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("Monday", "http://www.google.com.tw");

txtAutoComplete2.ItemsSource = dict;

效果:

image

用起來跟ASP.NET AJAX Toolkit中提供的功能還蠻類似的,也支援非同步更新等等的功能,相當貼心~這邊有完整介紹:Silverlight Toolkit For Windows Phone — AutoCompleteBox 。可惜的是控制項在Pivot 或是Panorama中使用會有問題,這時候就得自己做一個類似的控制項了。可以參考這篇文章:Using AutoCompleteBox in a Windows Phone Panorama or Pivot item

 

DatePicker & TimePicker

時間選擇應該算是最常應用到的功能了,像是填寫生日啦、查詢條件啦等等,也是直接就可以使用;不過圖形的部份要自己從範例程式找一下,在Toolkit.Content資料夾,整個資料夾複製到專案目錄下,並且把Build Action設為Content就可以了。(不然會看到選擇畫面的下方按鈕出現二個x哦!)

image

<!--ContentPanel - 其他內容置於此-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <TextBlock Text="選擇日期" Margin="0,0,0,569" />
    <toolkit:DatePicker ValueChanged="DatePicker_ValueChanged" Margin="-6,44,6,-44" />
    <TextBlock Text="選擇時間" Margin="0,125,0,-125" />
    <toolkit:TimePicker ValueChanged="TimePicker_ValueChanged" Margin="0,165,0,371" />
</Grid>

image

選擇畫面:

image image

 

CodePlex上也有提供範例程式,雖然是7.0的,不過dll有提供7.1 OS使用的,只要自己把平台換一下就可以進行測試了!目前Toolkit有提供的功能如下:

  • AutoCompleteBox
  • ContextMenu
  • DatePicker
  • DateTimeConverters
  • DatePicker
  • ExpanderView
  • GestureService/GestureListener
  • HeaderedItemsControl
  • HubTile
  • ListPicker
  • LocalizedResources
  • LockablePivot
  • LongListSelector
  • MultiselectList
  • Page Transitions
  • PerformanceProgressBar
  • PhoneTextBox
  • TiltEffect
  • TimePicker
  • ToggleSwitch
  • WrapPanel
  •  

    相關連結:

    Windows Phone Toolkit