List 객체에 저장된 ToDo의 간단한 목록이 데이터 바인딩을 통해 ListBox에 표시됩니다. 항목을 클릭 할 수 있으며 작업을 삭제할 수있는 세부 정보 페이지로 이동합니다. 모든 것은 정상적으로 작동하지만 뒤로 버튼을 클릭하면 ArgumentOutOfRangeException이 발생하고 앱이 다운됩니다.목록을 포함하는 페이지로 돌아갈 때 ArgumentOutOfRangeException이 발생했습니다.
이제 앱이 목록에 항목이 있다고 생각하기 때문에 수집 한 것입니다.하지만 수정 방법은 확실하지 않습니다.
System.Windows.dll에서 예외가 발생합니다. 구체적인 내용은 없습니다. 또한 OnNavigatedTo 이벤트 후에 예외가 발생하는 것을 알고 있습니다.
XAML (단지 목록 상자 - 다소 단순화) :
<ListBox Name="MyActivitiesList" ItemsSource="{Binding MyActivities}" SelectionChanged="ListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem>
<StackPanel Margin="0,0,0,12">
<-- context menu was here, but has been removed -->
<TextBlock Text="{Binding Title}" Style="{StaticResource BigHeader}"/>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Category.Name}" Style="{StaticResource SubtleText}"/>
<TextBlock Text=" - " Style="{StaticResource SubtleText}"/>
<TextBlock Text="{Binding VotesPercentage}" Style="{StaticResource SubtleText}"/>
<TextBlock Text="% positive" Style="{StaticResource SubtleText}" />
</StackPanel>
</StackPanel>
</ListBoxItem>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
코드 숨김
private MyActivitiesViewModel myActivitiesViewModel;
public MyActivitiesView()
{
InitializeComponent();
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
myActivitiesViewModel = new MyActivitiesViewModel();
this.DataContext = myActivitiesViewModel;
base.OnNavigatedTo(e);
}
protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
{
MyActivitiesList.SelectedItem = null;
base.OnNavigatingFrom(e);
}
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (((ListBox)sender).SelectedItem != null)
{
var idea = ((ListBox)sender).SelectedItem as Idea;
((ListBox)sender).SelectedItem = null;
Dispatcher.BeginInvoke(() => NavigationUtility.Navigate(new Uri("/View/IdeaView.xaml", UriKind.Relative), idea));
}
}
어떤 아이디어? 도와 주시면 대단히 감사하겠습니다!
'MyActivitiesList.SelectedItem = null;'을'MyActivitiesList.SelectedIndex = -1; '으로 변경해보십시오. 그렇게하면 SelectionChanged 이벤트 핸들러에 대해주의하십시오. – nkchandra
SelectedItem/Index에 대한 전체 종속성을 제거하고 탭 이벤트를 사용하여도 내 문제에 아무런 영향을주지 않습니다. –
'System.Windows.dll에서 예외가 발생했습니다. 콜 스택이 있으십니까? –