2015-04-23 2 views
1

Пробовал ли кто-нибудь cal: Message.Attach для событий Telerik WPF ReportViewer?cal: Message.Attach проблемы с Telerik WPF ReportViewer

Есть ли причина, по которой я не могу использовать Caliburn.Micro Message.Attach для события WPF ReportView PrintEnd для обмена данными между View и ViewModel? ReportView - это элемент FrameworkElement. Я связывание работаю хорошо для ReportSource

.NET 4.5 
Telerik.ReportViewer.Wpf 9.0.15.225 
Caliburn.Micro 2.0.2.0 

я получаю следующее при попытке это:

System.InvalidOperationException was unhandled 
Message: An unhandled exception of type 'System.InvalidOperationException' occurred in WindowsBase.dll 
The calling thread cannot access this object because a different thread owns it. 

WPF управление пользователем

<tr:ReportViewer Name="reportViewer" 
       ViewMode="PrintPreview" 
       ZoomMode="FullPage" 
       HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
       ReportSource="{Binding Path=ReportSource}" 
       cal:Message.Attach="[PrintEnd]=[OnPrintEnded()]" 
       /> 

ViewModel (Caliburn.Micro экран)

public void OnPrintEnded() 
{ 
    // 
} 

Кажется, что CM присоединяет событие, но сообщение выталкивается из другого потока, чем тот, на который включен мой экземпляр VM. Я создал очень легкий проект с минимальным значением Caliburn.Micro.Start и единственным Reportviewer и пустым классом отчетов в ShellView.xaml, чтобы изолировать проблему, но получить точные результаты.

У меня есть обходной путь придумал, но хотел бы видеть, если это может быть решено

ответ

0

Вы должны попробовать этот способ:

cal:Message.Attach="[Event PrintEnd] = [Action OnPrintEnded]" 

Для получения дополнительной информации обратитесь к документации о действиях Caliburn.Micro: Caliburn.Micro actions

+0

Спасибо, я пробовал это, но это не повлияло. Я могу прикрепить PrintBegin, ExportBegin и ExportEnd (используя любой стиль) без проблем, однако PrintEnd специально выбрасывает это исключение. Возможно, это связано с тем, как Telerik ReportViewer запускает событие. – Mike

0

Служба поддержки Telerik подтвердила, что мероприятие было опубликовано с другой темы и зарегистрировало проблему для корректирующих действий.