У меня есть 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 *
Есть ли другой способ добиться этого?