这里有几点值得注意。首先,我们使用内置的Sterling日志记录器简单地把执行结果输出到调试窗口。事实上,Sterling也支持编写自定义日志记录器并注册到Sterling引擎。然而,有关编写自定义日志记录器的问题已经超出了本文的范围。其次,通过调用方法RegisterDatabase我们把数据库注册到Sterling引擎中。第三,我们把两个先前定义的触发器通过数据库的RegisterTrigger方法注册到Sterling引擎。
2.在WP7生命周期事件中控制Sterling引擎
现在,我们可以使用Windows Phone 7应用程序的四个典型的生命周期事件的编程来调用上面的两个辅助方法。
列表4:在WP7应用程序生命周期事件中控制Sterling引擎
private void Application_Launching(object sender, LaunchingEventArgs e)
{
_ActivateEngine();
}
private void Application_Activated(object sender, ActivatedEventArgs e)
{
_ActivateEngine();
if (!App.ViewModel.IsDataLoaded)
{
App.ViewModel.LoadData();
}
}
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
_DeactivateEngine();
}
private void Application_Closing(object sender, ClosingEventArgs e)
{
_DeactivateEngine();
}
{
_ActivateEngine();
}
private void Application_Activated(object sender, ActivatedEventArgs e)
{
_ActivateEngine();
if (!App.ViewModel.IsDataLoaded)
{
App.ViewModel.LoadData();
}
}
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
_DeactivateEngine();
}
private void Application_Closing(object sender, ClosingEventArgs e)
{
_DeactivateEngine();
}
有关Windows Phone 7应用程序的上述四个生命周期事件的解释,请参考其他的Windows Phone 7入门性文章,在此不再赘述。
截至目前,Sterling数据库大部分的相关工作已经完成。随后的任务是把Sterling数据库结合进WP7视图页面的编程中。
三、编写视图页面
现在,让我们来看看如何编写两个示例网页。首先,第一个页面MainPage.xaml的构建非常简单,仅仅使用一个ListBox控件来显示组数据列表。
列表5: 主视图页面XAML关键标记代码
<ListBox x:Name="MainListBox" Margin="0,0,-12,0" ItemsSource="{Binding Groups}"
SelectionChanged="MainListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432" Orientation="Horizontal">
<TextBlock Text="{Binding GroupId}" TextWrapping="Wrap"
Style="{StaticResource PhoneTextExtraLargeStyle}"/>
<TextBlock Text="{Binding GroupName}" TextWrapping="Wrap" Margin="12,-
6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
SelectionChanged="MainListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432" Orientation="Horizontal">
<TextBlock Text="{Binding GroupId}" TextWrapping="Wrap"
Style="{StaticResource PhoneTextExtraLargeStyle}"/>
<TextBlock Text="{Binding GroupName}" TextWrapping="Wrap" Margin="12,-
6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在,稍有Siverlight经验的读者应当都会理解上面的标记代码。这里通过使用基本的数据绑定技术(我们使用ListBox)来渲染GroupViewModel实例的每一个属性值。
接下来,让我们看看主视图页面后台代码编写的情况。