2014-05-04 17 views
14

I Have WPF Project Kiedy próbuję uruchomić ten kod na RowLoad Event dostałem poniżej błędu:WPF: Dyspozytor przetwarzanie zostało zawieszone, ale wiadomości są nadal przetwarzane

private void ParentGridView_OnRowLoaded(object sender, EventArgs e) 
{ 
    try 
    { 
     if(((RadGridView)sender).Columns != null) 
     { 
      MessageBox.Show(((RadGridView)sender).Columns.Count.ToString(CultureInfo.InvariantCulture)); 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

Błąd: Dyspozytor przetwarzanie ma został zawieszony, ale wiadomości są nadal przetwarzane.

pamiętać, że kontrola jest GridView Telerik RadGridView

Odpowiedz

21

This answer opisuje tę samą sytuację jak ty. (Odnosi się do tego answer on a different website).

Proces przetwarzania dyspozytora jest zawieszany, aby uniknąć problemów z ponownym włączeniem podczas aktualizowania drzewa wizualnego.

Jeśli naprawdę potrzebujesz wyświetlić okno komunikatu w odpowiedzi na zdarzenie "Wiersz załadowany", musisz odłożyć połączenie za pomocą `Dispatcher.BeginInvoke().

więc wymienić:

MessageBox.Show(((RadGridView)sender).Columns.Count.ToString(CultureInfo.InvariantCulture)); 

z:

var msg = ((RadGridView)sender).Columns.Count.ToString(CultureInfo.InvariantCulture); 
Dispatcher.BeginInvoke(new Action(() => MessageBox.Show(msg))); 

Jeśli ten kod jest w obiekcie WPF, właściwość Dispatcher jest dostępna. W przeciwnym razie musisz go pobrać z innego miejsca.

Powiązane problemy