我在Windows Phone 7应用程序中有一个页面,用户可以在其中编辑或删除Transaction对象.Transaction对象是Linq-to-Sql类,它与Account类和Category类有关系.在页面中,我使用ListPicker让用户选择给定事务的帐户和类别,如下所示:
<toolkit:ListPicker Grid.Row="1" FullModeHeader="Choose the Account" FullModeItemTemplate="{StaticResource FullModeItemTemplate}" ExpansionMode="FullScreenOnly" Background="#26000000" Margin="10,0,10,0" Name="Account" SelectedItem="{Binding Account, Mode=TwoWay}" Tap="ListPicker_Tap" />
<toolkit:ListPicker Grid.Row="7" FullModeHeader="Choose the Category" FullModeItemTemplate="{StaticResource FullModeItemTemplate}" ExpansionMode="FullScreenOnly" Background="#26000000" Margin="10,0,10,0" Name="Category" SelectedItem="{Binding Category, Mode=TwoWay}" Tap="ListPicker_Tap" />
Run Code Online (Sandbox Code Playgroud)
ListPicker_Tap事件是针对Windows Phone的WPF Toolkit的Aug/2011版本中的错误的修复,简单地说是:
private void ListPicker_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
ListPicker lp = (ListPicker)sender;
lp.Open();
}
Run Code Online (Sandbox Code Playgroud)
如果用户编辑事务,一切都很好,但如果用户尝试删除它,我会收到一条错误,指出"SelectedItem必须始终设置为有效值".
如果用户单击TransactionPage.xaml.cs中appbar中的delete按钮,则代码如下:
private void appBarDelete_Click(object sender, EventArgs e)
{
MessageBoxResult result = MessageBox.Show("Are you sure?\n", "Confirm", MessageBoxButton.OKCancel);
if (result == MessageBoxResult.OK)
{
App.ViewModel.DeleteTransaction(transaction);
}
NavigationService.GoBack();
}
Run Code Online (Sandbox Code Playgroud)
我的ViewModel.DeleteTransaction方法:
public void …Run Code Online (Sandbox Code Playgroud)