Я использовал DevC ++, когда изучал C много лет назад. Это был отличный инструмент, хотя я давно его не видел, поэтому не уверен, в каком он сейчас состоянии.
Ненавижу отвечать на свои вопросы, но для полноты, вот мое решение.
<ListBox ItemsSource="{Binding}">
<ListBox.Resources>
<ControlTemplate x:Key="textBoxControlTemplate" TargetType="ContentControl">
<TextBox Text="{TemplateBinding Content}" />
</ControlTemplate>
</ListBox.Resources>
<ListBox.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding Name}" Template="{StaticResource textBoxControlTemplate}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Это, конечно, очень надуманный пример . В моем собственном приложении я не помещаю текстовые поля внутри списка. В списке это не очень полезно, но представьте, что это внутри DataGrid, где каждый столбец может отображаться аналогичным образом, но привязан к другому свойству.
Create a UserControl and use it within the DataTemplate.
<DataTemplate>
<local:MyComplexUserControl DataContext="{Binding Name}"/>
</DataTemplate>
and within the UserControl:
<StackPanel>
<TextBlock>Value:</Text>
<TextBox Text="{Binding}"/>
</StackPanel>
Have a separate DataTemplate with its own binding for each occasion.