如何从NServiceBus订阅者处理程序类访问MainWindow.xaml.cs中的listview

时间:2012-03-03 23:47:49

标签: c# wpf nservicebus

我想将从EventHandler类派生的NServiceBus subscripiton消息发布到ListView。 ListView位于WPF应用程序的MainWindow.xaml中。

这是我的NServiceBus订阅事件处理程序代码。注意:我想将事件消息发布到MainWindow.xaml中的ListView控件。有什么想法吗?

namespace EventPublisher.SubscriberDemoWPF
{
   public class PublishTrackEventHandler : IHandleMessages<PublishTrackEvent>
   {
      public void Handle(PublishTrackEvent message)
      {
         Trace.TraceInformation(message.GetType().Name);

         //Need to post event message to ListView control in MainWindow.xaml UI;
      }
   }
}

这是我的MainWindow.xaml代码,它与我的事件处理程序代码位于相同的命名空间中:

<Window x:Class="EventPublisher.SubscriberDemoWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListView Height="260" HorizontalAlignment="Left" Margin="12,12,0,0" Name="lstEvents" VerticalAlignment="Top" Width="479" />
    </Grid>
</Window>

这是MainWindow.xaml.cs代码(典型):

namespace EventPublisher.SubscriberDemoWPF
{
   /// <summary>
   /// Interaction logic for MainWindow.xaml
   /// </summary>
   public partial class MainWindow : Window
   {
      public MainWindow()
      {
         InitializeComponent();
      }

      //Would normally use listview.items.add("messages"); 
   }
}

1 个答案:

答案 0 :(得分:1)

从NSB消息处理程序中,您可以触发已从Window附加到的事件。根据您管理线程的方式,请注意从UI线程以外的线程更新UI元素。在MSDN中查看this article以查找WPF中的事件。