У меня есть WPF DataGrid
, связанный с ObservableCollection
.
Каждый элемент моей коллекции имеет свойство List<someObject>
.
В области сведений о моей строке я хотел бы написать форматированные текстовые блоки для каждого элемента в этой коллекции. Конечный результат был бы чем-то эквивалентным:
<TextBlock Style="{StaticResource NBBOTextBlockStyle}" HorizontalAlignment="Right">
<TextBlock.Inlines>
<Run FontWeight="Bold" Text="{Binding Path=Exchanges[0].Name}" />
<Run FontWeight="Bold" Text="{Binding Path=Exchanges[0].Price}" />
<LineBreak />
<Run Foreground="LightGray" Text="{Binding Path=Exchanges[0].Quantity}" />
</TextBlock.Inlines>
</TextBlock>
<TextBlock Style="{StaticResource NBBOTextBlockStyle}">
<TextBlock.Inlines>
<Run FontWeight="Bold" Text="{Binding Path=Exchanges[1].Name}" />
<Run FontWeight="Bold" Text="{Binding Path=Exchanges[1].Price}" />
<LineBreak />
<Run Foreground="LightGray" Text="{Binding Path=Exchanges[1].Quantity}" />
</TextBlock.Inlines>
</TextBlock>
и т.д. 0-n раз.
Я пробовал использовать ItemsControl
для этого:
<ItemsControl ItemsSource="{Binding Path=Exchanges}">
<DataTemplate>
<Label>test</Label>
</DataTemplate>
</ItemsControl>
однако, это, по-видимому, предназначено только для более статических источников, поскольку оно генерирует следующее исключение (коллекция не изменяется после создания):
Элементы ItemsControl недействительны при использовании ItemsSource. Доступ и изменение элементов с помощью ItemsControl.ItemsSource вместо *
Есть ли другой способ достичь этого?