Я создаю графический интерфейс для редактирования различных файлов конфигурации XML в зависимости от того, какие значения разрешены их схемой. Мне нужен способ для отображения метки для каждого поля в левом столбце, в то время как отображение элемента управления для редактирования этого поля в правом столбце. Если бы этот список полей не был динамическим, я бы просто отобразил их в таблице с двумя столбцами. Но это не так просто с динамическим списком полей.
В приведенном ниже примере показано, что я хотел бы сделать, но поскольку DataTemplate может содержать только одного дочернего элемента, этот способ не будет работать. Кто-нибудь знает хороший обходной путь, который бы правильно создавал этот динамический макет формы?
(Чтобы упростить пример, я использую унифицированную сетку. Я, вероятно, предпочел бы подход, который удаляет сетку в ControlTemplate (чтобы вы могли определить столбцы / строки) - но я подумал, что этот подход получил указать поперек)
<ItemsControl x:Name="FieldItemsCtrl">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="2" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type local:EditableField}">
<TextBlock Text="{Binding FieldName}" Foreground="{DynamicResource TextBrush}" />
<TextBox Text="{Binding FieldValue}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Спасибо!