我在Windows Phone 7應用程序中有一個頁面,用戶可以在其中編輯或刪除一個Transaction對象。 Transaction對象是一個與Account類和Category類有關係的Linq-to-Sql類。在該頁面中,我使用ListPicker讓用戶選擇指定交易的帳戶和類別,如:Listpicker錯誤SelectedItem必須始終設置爲有效值
<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" />
的ListPicker_Tap事件是在八月/ 2011版的WPF的一個bug修復工具包的Windows Phone和很簡單:
private void ListPicker_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
ListPicker lp = (ListPicker)sender;
lp.Open();
}
如果用戶編輯的交易,一切都很好,但如果用戶試圖刪除它,我得到一個錯誤說「的SelectedItem必須始終設置爲有效值「。
下面的代碼,如果用戶點擊刪除按鈕在appbar在TransactionPage.xaml.cs:
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();
}
我ViewModel.DeleteTransaction方法:
public void DeleteTransaction(Transaction transaction)
{
AllTransactions.Remove(transaction);
transactionRepository.Delete(transaction);
}
我transactionRepository.Delete方法:
public void Delete(Transaction transaction)
{
Context.Transactions.DeleteOnSubmit(transaction);
Context.SubmitChanges();
}
我在Context.SubmitChanges中收到錯誤()執行,調試點,交易類中的NotifyPropertyChanged,在那裏我得到了錯誤的路線是這樣的:
protected virtual void SendPropertyChanged(String propertyName)
{
if ((this.PropertyChanged != null))
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
在propertyName的屬性值是「類別」。它看起來像是在刪除對象時發送類別和帳戶的屬性更改事件,並且由於listpicker處於雙向模式,所以在處理它時遇到了一些麻煩。我怎麼修復它?我需要一些幫助。
您可以將完整的XAML?或者如果它太長,只要我們可以看到'{Binding Account,Mode = TwoWay}'和'{Binding Category,Mode = TwoWay}'指的是什麼,部分XAML就可以。 – Amry