If the ListView is to be visible while rendering it to an image you can put it (preferably temporarily) inside a ScrollViewer, which will give it an infinite layout space, so the ListViewItems aren't virtualized away from the render, then you can use RenderTargetBitmap on the ListView.
If you don't have to show the ListView you can render it off-screen as this answer shows, like so:
var listView = new ListView{ ItemsSource = ... etc }
listView.Measure(new Size(10000, 20000));
listView.Arrange(new Rect(new Size(10000, 20000)));
RenderTargetBitmap bmp = new RenderTargetBitmap(listView.ActualWidth, listView.ActualHeight, 96, 96, PixelFormats.Pbgra32);
bmp.Render(control);
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
encoder.Save(somewhere);