técnicas tipos tecnicas recopilar recopilacion recolectar recolección recoleccion para metodos información informacion fuentes ejemplos datos c# .net wpf

c# - tipos - ¿Control de repetidor WPF(como) para la fuente de recolección?



tecnicas de recopilacion de informacion (1)

Tengo un DataGrid WPF vinculado a ObservableCollection . Cada elemento de mi colección tiene una propiedad que es una List<someObject> . En el panel de detalles de mi fila, me gustaría escribir bloques de texto con formato para cada elemento de esta colección. El resultado final sería algo equivalente a:

<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>

y así sucesivamente 0-n veces.

He intentado usar ItemsControl para esto:

<ItemsControl ItemsSource="{Binding Path=Exchanges}"> <DataTemplate> <Label>test</Label> </DataTemplate> </ItemsControl>

sin embargo, esto parece ser solo para fuentes más estáticas, ya que produce la siguiente excepción (la colección no se altera después de la creación):

La operación ItemsControl no es válida mientras ItemsSource está en uso. Acceda y modifique los elementos con ItemsControl.ItemsSource en su lugar *

¿Hay otra manera de lograr esto?


Lo que hizo al especificar <DataTemplate .../> dentro de ItemsControl es que agregó esta instancia de DataTemplate a la propiedad predeterminada de ItemsControl que es Items . Entonces, la excepción que obtuvo es el resultado esperado: primero especifique el ItemsSource y luego modifique los Items . En su lugar, debe modificar la propiedad ItemTemplate en su ItemsControl la ItemsControl manera:

<ItemsControl ItemsSource="{Binding Path=Exchanges}"> <ItemsControl.ItemTemplate> <DataTemplate> <Label>test</Label> </DataTemplate> </ItemsControl.ItemTemplate> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal"/> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> </ItemsControl>