Your window DataContext is set to Messages, then in your LIstView your binding the ItemsSource to the Path Messages. ItemsSource should just be {Binding } without a path since it needs to use the DataContext directly.
<ListView x:Name="ListView" HorizontalAlignment="Left" Height="704" Margin="47,39,0,0" VerticalAlignment="Top" Width="600" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding }"><ListView.View ><GridView AllowsColumnReorder="true"><GridViewColumn Width="300" Header="Subject" DisplayMemberBinding="{Binding Subject}"/><GridViewColumn Width="150" Header="Date" DisplayMemberBinding="{Binding Date}"/><GridViewColumn Width="120" Header="Sender" DisplayMemberBinding="{Binding Sender}"/><GridViewColumn Width="20" Header="ID" DisplayMemberBinding="{Binding ID}"/></GridView></ListView.View></ListView>