之前寫過一篇文章:Windows Phone 7:使用數組作為LoopingSelector的ILoopingSelectorDataSource。不過同事在用的時候發現沒有索引值選項的支援,正巧其中的主要類型LoopingArrayDataSource內部會使用一個字典,因此就使用這個內部字典來使其增加索引值屬性:SelectedIndex。
使用樣本,實現定義好LoopingSelector:
<primitive:LoopingSelector xmlns:primitive="clr-namespace:Microsoft.Phone.Controls.Primitives;assembly=Microsoft.Phone.Controls.Toolkit"
Name="loopingSelector" ItemSize="100,100" />
接著在Page的Loaded事件中做一些測試:
private void Page_Loaded(object sender, RoutedEventArgs e)
{
//設定最初選中元素為Tony
var dataSource = new LoopingArrayDataSource(new string[] { "Mgen", "Jerry", "Tony" }, 2);
loopingSelector.DataSource = dataSource;
//在ILoopingSelectorDataSource.SelectionChanged後輸出SelectedItem和SelectedIndex屬性
loopingSelector.DataSource.SelectionChanged += (ss, ee) =>
{
System.Diagnostics.Debug.WriteLine("{0} {1}", dataSource.SelectedIndex, dataSource.SelectedItem);
};
ThreadPool.QueueUserWorkItem(_ =>
{
//一秒後通過SelectedItem把選中項設定成Jerry
Thread.Sleep(1000);
Dispatcher.BeginInvoke(() => dataSource.SelectedItem = "Jerry");
//一秒後通過SelectedIndex把選中項設定成第一個元素Mgen
Thread.Sleep(1000);
Dispatcher.BeginInvoke(() => dataSource.SelectedIndex = 0);
});
}
OK,LoopingSelector的選擇項會按時被設定,同事Debug下輸出SelectedItem和SelectedIndex屬性:
目前的版本的原始碼下載
注意:此為微軟SkyDrive存檔,請用瀏覽器直接下載,用某些下載工具可能無法下載
原始碼環境:Microsoft Visual Studio 2010 Express for Windows Phone
注意:原始碼不包含引用的外部類庫檔案