技术开发 频道

微软WP7本地数据库之Sterling编程技巧

<Image Source="{Binding ThumbNail,Converter={StaticResource

ImageConverter1}}
" />
                </StackPanel>
            
</DataTemplate>
        
</ListBox.ItemTemplate>
    
</ListBox>
</Grid>

       为了简单起见,我们还利用一个ListBox控件来展示联系人信息。同时,我们也使用了典型的Silverlight数据绑定技术。总体来看,上面代码中只有一点值得注意,即图像数据的显示问题。为此,代码中使用了一个自定义的类型转换器。

  列表8: 自定义的类型转换器代码

  public class imageUrlConverter : IValueConverter

  {

  
public object Convert(object value, Type targetType, object parameter,

  System.Globalization.CultureInfo culture)

  {

  
if (value == null || parameter == null)

  {

  return value;

  }

  return
new BitmapImage(new Uri((string)value, UriKind.RelativeOrAbsolute));

  }

  
public object ConvertBack(object value, Type targetType, object parameter,

  System.Globalization.CultureInfo culture)

  {

  throw
new NotImplementedException();

  }

  注意,在本示例实现方案中,在构建联系人Contact的实例时,我们只持有在ThumbNail属性中存储的联系人相关缩略图的路径信息。上面转换器的关键在于Convert方法。在这个方法中,我们通过图片路径返回对应于缩略图的BitmapImage实例。然后,我们将它设置为图像控件的Source属性。

  至于页面ContactList.xaml后台代码的实现就很简单了,如下所示。

  列表9: 页面ContactList.xaml后台代码的实现

  protected override void OnNavigatedTo(NavigationEventArgs e)

  {

  
string selectedGroup = "";

  
if (NavigationContext.QueryString.TryGetValue("selectedGroup", out selectedGroup))

  {

  
int iGroup = int.Parse(selectedGroup);

  
// Query from Database by key

  var contactList
=from key in

  App.Database.Query().Where(

  x
=> x.LazyValue.Value.GroupId == iGroup + 1).ToList() select key.LazyValue.Value;

  MainListBox.ItemsSource
=contactList;

  }

  }

  OnNavigatedTo方法是Silverlight for WP7中的基本导航方法,不必再赘述了。在上面代码中,一旦我们接收下selectedGroup参数,我们即使用它来创建一个标准的Sterling查询语句。注意,要想全面领会这里的查询语句,你应该先知道LazyValue在Sterling使用中所起的重要作用。最后,我们把查询结果绑定到ListBox控件的ItemsSource属性。这就是全部!

  四、总结

  在本系列文章中,我们只是初步介绍了Sterling这款开源的面向对象嵌入式数据库在Silverlight for Windows Phone 7中的基本应用思路和操作技巧。很显然,如果读者以前未曾有过面向对象数据库方面的知识,你会感觉到Sterling的实现架构有些陌生。然而,如果您已经有扎实的C#面向对象和LINQ to Object基础,那么,快速入门Sterling也不是什么难事。当然,不同于传统的关系数据库,在使用Sterling前,你最好预先掌握一些面向对象程序设计技术,特别是掌握一些面向对象的数据库理论。随着Sterling在你心中不断扎根,你会发现Sterling是一个相当不错的工具-轻量级而且高效率,非常适合Windows Phone 7数据驱动应用程序的开发。实际上,本文介绍的只不过是触及了Sterling的一点皮毛,还有更多更好的东西等着您自己去深入挖掘。

0
相关文章