ユーザーがトランザクションオブジェクトを編集または削除できるWindows Phone 7アプリケーションにページがあります。 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イベントは、WPFの8月/ 2011年版のバグの修正ですWindowsの携帯電話のためのツールキットと単にこれです:
private void ListPicker_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
ListPicker lp = (ListPicker)sender;
lp.Open();
}
ユーザー編集する場合は、トランザクション、すべてが正常であるが、ユーザがそれを削除しようとすると、私はエラーを取得する「のSelectedItemは常にに設定されなければならないことを言って有効値 "とする。
ここ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、私はエラーを取得する行にデバッグポイントはこれです:propertyNameので
protected virtual void SendPropertyChanged(String propertyName)
{
if ((this.PropertyChanged != null))
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
は、値が「カテゴリー」である属性。オブジェクトを削除すると、カテゴリとアカウントのpropertychangedイベントが送信され、listpickerはTwoWayモードになっているため、問題を処理するのに問題があります。どうすれば修正できますか?助けが必要です。
あなたは完全なXAMLを添付することができホープ?また、長すぎると、 '{Binding Account、Mode = TwoWay}'と '{Binding Category、Mode = TwoWay} 'が何を参照できるか分からない限り、部分的なXAMLは問題ありません。 – Amry