2016-11-29 8 views
0

У меня есть сводный контроль в моем приложении uwp. В событии pivot_selectionchanged я написал для отображения диалога сообщений.Ошибка приложения UWP вместо отображения диалогового окна сообщения

После создания пакета приложения uwp, когда я нажал на элемент поворота, некоторые диалоговые окна предупреждений должны отображаться, но вместо этого они не отображаются, а в этом случае приложение рушится. Это только с некоторыми машинами. Может ли кто-нибудь знать причину?

Код я написал

private void OpenBillPivot_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    bool Isreturn = false; 
    bool IsExchange = false; 

    Isreturn = checkUserPermission(Constants.Return); 
    IsExchange = checkUserPermission(Constants.Exchange); 
    if (Application.Current.Resources[Constants.RETURNS].ToString() == Constants.FALSE_CAMELCASE) 
     Isreturn = false; 
    else 
     Isreturn = true; 
    if (Application.Current.Resources[Constants.EXCHANGES].ToString() == Constants.FALSE_CAMELCASE) 
     IsExchange = false; 
    else 
     Isreturn = true; 

    if ((txtblStatus.Text == "Cancelled" || txtblStatus.Text=="Draft") && (OpenBillPivot.SelectedIndex == 1 || OpenBillPivot.SelectedIndex == 2 || OpenBillPivot.SelectedIndex == 3)) 
    { 
     TransactionDetails.Visibility = Visibility.Collapsed; 
     ReturnDetails.Visibility = Visibility.Collapsed; 
     ExchangeDetails.Visibility = Visibility.Collapsed; 
     //SimpleMessageDialog(ResourceLoader.GetForCurrentView().GetString("PLEASE_CLEAR_THE_BILL"), ResourceLoader.GetForCurrentView().GetString("ALERT")); 
    } 

    else if (OpenBillPivot.SelectedIndex == 2) 
    { 
     if ((txtblStatus.Text == "Pending" && txtblBillDue.Text != Constants.ZERO)) 
     { 
      ReturnDetails.Visibility = Visibility.Collapsed; 
      ExchangeDetails.Visibility = Visibility.Collapsed; 
      SimpleMessageDialog(ResourceLoader.GetForCurrentView().GetString("PLEASE_CLEAR_THE_BILL"), ResourceLoader.GetForCurrentView().GetString("ALERT")); 
     } 

     else 
     { 
      if (!Isreturn) 
      { 
       ReturnDetails.Visibility = Visibility.Collapsed; 
       SimpleMessageDialog("Access Denied", ResourceLoader.GetForCurrentView().GetString("ALERT")); 
      } 
      else 
       ReturnDetails.Visibility = Visibility.Visible; 
     } 

    } 

и диалог сообщение Код:

private async void SimpleMessageDialog(string Message, string Title) 
{ 
    MessageDialog dialog = new MessageDialog(Message, Title); 
    dialog.CancelCommandIndex = 1; 
    await dialog.ShowAsync(); 
} 
+2

Может окружать ваш код с заявлениями попробовать/улов, так что вы можете найти исключение, которое происходит, когда он выходит из строя? Сообщение об исключении может помочь вам узнать, что на самом деле происходит. – Streltsov

+0

, вы должны опубликовать исключение своего приложения, чтобы получить более подробную информацию. Спасибо! – RicardoPons

+0

Почему люди предлагают обертывание кода в инструкции try/catch, чтобы найти исключение? Это совершенно ненужно и ужасная идея! ** Когда генерируется исключение, ваш отладчик будет разорваться и сразу же увидеть его в этой точке. Вам не нужна куча блоков catch, которые отображают окна сообщений. ** Глобальный обработчик исключенных обработок уже делает это! Все, что добавляет кучу блоков try/catch, заключается в том, что исключение отключено, и вы никогда не получите хороший шанс отладить их. –

ответ

1

это может быть потому, что вы на самом деле не ждет сообщение, чтобы показать, изменить тип возвращаемого из пустоты к задаче:

private async Task SimpleMessageDialog(string Message, string Title) 
{ 
    MessageDialog dialog = new MessageDialog(Message, Title); 
    dialog.CancelCommandIndex = 1; 
    await dialog.ShowAsync(); 
} 

и ждут его:

await SimpleMessageDialog(ResourceLoader.GetForCurrentView().GetString("PLEASE_CLEAR_THE_BILL"), ResourceLoader.GetForCurrentView().GetString("ALERT")); 

вам нужно изменить метод ASync, а также:

private async void OpenBillPivot_SelectionChanged... 
+0

openbillpivot_selectionchanged - это событие, поэтому мы не можем его изменить. – Sagar

+0

это обработчик событий, и я не вижу причин, по которым вы не можете пометить его async – RTDev