It seems to me it would be much better to do something like this:
<DataTemplate x:Key="fieldStringTemplate">
<TextBox Text="{Binding Path=FieldValue}" />
</DataTemplate>
<DataTemplate x:Key="fieldDateTemplate">
<DatePicker SelectedDate="{Binding Path=FieldValue}" />
</DataTemplate>
<!-- and so on... -->
<DataTemplate x:Key="common">
<StackPanel>
<TextBlock Text="{Binding Path=Name}" />
<TextBlock Text="{Binding Path=DisplayValue}" />
<ContentPresenter Content="{Binding}"
ContentTemplateSelector="{StaticResource fieldTemplateSelector}"/>
</StackPanel>
</DataTemplate>
<ListBox ItemsSource="{Binding Path=Fields}"
ItemTemplate="{StaticResource common}"
HorizontalContentAlignment="Stretch">
</ListBox>