1

Я получаю «System.Runtime.InteropServices.COMException (0x80004005): Неопределенная ошибка« при строго переключении между двумя пользовательскими элементами управления. Я разрабатываю приложение для Windows Phone 8.1 с использованием C# и XAML в Visual Studio 2013. Если мое понимание правильное (из Интернета и форумов), это происходит во многих приложениях, когда мы делаем строгую навигацию, и я не смог получить конкретную решение для того же самого. Есть ли способ поймать это исключение и предотвратить сбой приложения.Как справиться с «System.Runtime.InteropServices.COMException (0x80004005): Unspecified error« ...?

+0

Я также сталкиваются с той же проблемой. Мое приложение падает, когда я нажимаю на comboboxes непрерывно, затем он случайно падает. При удаче? – Khurram

ответ

1
  • У вас есть usercontrols, как itemtemplate в ListView/GridView?
  • Вы используете событие ItemClick в ListView/GridView?
  • Вы переходите на другую страницу в рамках события ItemClick?

Тогда это может помочь ...

Вместо ItemClick пытаются использовать постучала событие из корневой сетки вашего UserControl. Так или иначе событие ItemClick разбито на Windows Phone 8.1, но отлично работает на Windows 8.1.

Пример кода:

Не делайте этого:

Xaml

<GridView ItemClick="GridView_ItemClick"> 
    <GridView.ItemTemplate> 
     <DataTemplate> 
      <usercontrols:MyUserControl/> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 

код позади:

private void GridView_ItemClick(object sender, ItemClickEventArgs e) 
{ 
    // Your navigation code... 
} 

Вместо этого попробуйте:

XAML

<GridView> 
    <GridView.ItemTemplate> 
     <DataTemplate> 
      <usercontrols:MyUserControl OnTapped="ItemTapped"/> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 

код страницы за

private void ItemTapped(object sender, RoutedEventArgs e) 
{ 
    // You navigation code 
} 

код UserControl за

public sealed partial class MyUserControl : UserControl 
{ 
    public event EventHandler OnTapped; 

    public MyUserControl() 
    { 
     this.InitializeComponent(); 
    } 

    private void RootGrid_Tapped(object sender, TappedRoutedEventArgs e) 
    { 
     if (OnTapped != null) 
     { 
      OnTapped(this, null); 
     } 
    } 
} 
Смежные вопросы