- a MainWindow.xaml with a ListView
- a MainViewModel with an ObservableCollection of objects of type, UnitData
- a UnitDataDisplay.xaml with a bunch of labels tied to members of UnitData

I need to show a variable number of UnitDataDisplays in my ListView that should be based on MainViewModel's ObservableCollection of UnitDatas. What exactly should the syntax be in XAML to bind the ListView Items to multiple UserControl objects without breaking the MVVM separation of concerns? I mean I could easily have my ObservableCollection contain a bunch of UnitDataDisplay objects but that would force my MainViewModel to have knowledge of View details.

I would then change your ListView to a ListBox, or an ItemsControl if you don't want each item in the list to be selectable.

I would also seriously consider using an MVVM framework rather than the above approach, such as Caliburn.Micro which makes view composition such as this much easier, as well as a host of other advantages.