사용자가 Transaction 개체를 편집하거나 삭제할 수있는 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 버전의 버그에 대한 수정이다 윈도우 폰과 Toolkit은 단순히 이것이다 :
private void ListPicker_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
ListPicker lp = (ListPicker)sender;
lp.Open();
}
만약 사용자 편집 트랜잭션은 모든 괜찮지 만, 사용자가이를 삭제하려고하면, 나는 selectedItem가이 항상 설정해야합니다 "라고 말하는 오류가 유효 값 ". 여기
코드의 경우 TransactionPage.xaml.cs에서 appbar에서 삭제 버튼의 사용자 클릭 :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));
}
}
는 값이 "종류"입니다 때문이다. 그것은 개체를 삭제할 때 범주 및 계정의 propertychanged 이벤트를 보내고 listpicker가 TwoWay 모드에 있기 때문에 문제를 처리하는 것처럼 보입니다. 내가 어떻게 고칠 수 있니? 나는 도움이 필요해.
당신이 전체 XAML을 첨부 할 수 있습니다 희망이 도움? 또는 너무 길면,'{Binding Account, Mode = TwoWay}'와'{Binding Category, Mode = TwoWay} '가 무엇을 가리키는 지 알면 부분적인 XAML도 괜찮을 것입니다. – Amry