Приветствую, мои умные друзья по программированию!
Я создал OnResponseEvent для объекта, который внедряется в мою модель представления через UnityContainer.
Из моего класса введенных объектов:
public delegate void ResponseEventHandler(AbstractResponse response);
public event ResponseEventHandler OnResponseEvent;
Constructor for MainWindowViewModel:
public MainWindowViewModel(ITrack track)
{
this._track = Track;
track.OnResponseEvent += UpdateTrackResponseWindow;
}
Создан делегат для обработки OnResponseEvent в моем MainWindowViewModel:
private delegate void HandleTrackResponseCallback(AbstractResponse message);
Поскольку OnResponseEvent отправляет сообщение, мне нужно интерпретировать сообщение в отдельном потоке и отобразить в списке.
Вот где я запутался. Если бы я использовал WinForms для написания этого приложения, я мог бы использовать следующий код, потому что WinForms знает о моем listBox:
if (ListBox.InvokeRequired)
{
var d = new HandleTrackResponseCallback(UpdateTrackResponseWindow);
Invoke(d, new object[] { message });
}
else
lstTrackResponse.Text = Interpret(message); //Interpret is a separate method
Однако я использую WPF, и мой класс MainWindowViewModel ничего не знает о моем listBox, который находится в представлении.
Может ли кто-нибудь предоставить пример кода, как я могу обработать OnResponseEvent в другом потоке в моем классе MainWindowViewModel?
Большое спасибо, любая помощь очень ценится.