Viendo un StackPanel enlazados a datos dentro de un DataTemplate
-
12-09-2019 - |
Pregunta
Tengo objetos estoy enlace de datos a un cuadro de lista en WPF. Esto es lo que el resultado final debe ser similar a:
------------------------------- | Name | Opt1 | Value1 | | | Opt2 | Value2 | | | Opt3 | Value3 | | | Opt4 | Value4 | -------------------------------
En esencia Tengo un DataTemplate para la variable global, y luego el / Valor combinado Opt tiene su propio DataTemplate. Estoy tratando de mostrar la lista de valores de forma más sencilla posible.
<Label Content="{Binding Path=Identifier.Name, Mode=OneWay}" />
<ListView Grid.Column="1" HorizontalAlignment="Stretch"
ItemsSource="{Binding Path=Values, Mode=OneWay}" />
La unión de los valores es en la actualidad sólo un <Grid>
con de 2 <Label>
y ListView tiene un montón de características Que te miro, como el estilo frontera, selecciones, y tal, cuando todo lo que realmente quiero es ser capaz de DataBind utilizando una Lista.
He tratado de DataBind los artículos a un StackPanel, pero no pude conseguir que funcione en XAML. Supongo que otra solución es hacer lo que estoy haciendo, y reescribir el <Style>
de ListView. ¿Alguna sugerencia sobre la forma correcta de hacer esto?
Solución
Es ciertamente suena como algo que puede hacer con un ListBox, o un ItemsControl si no quiere que sean seleccionables. También podemos hacer uso de la IsSharedSizeScope adjunta propiedad para mantener nuestras columnas e incluso formateados. También, echar un vistazo a la herencia Higharchy en la parte inferior del cuadro de lista de enlace, debería ayudar a determinar qué tipo de lista de lo que necesita para diferentes escenarios.
Trate algo como esto:
<DockPanel>
<Label Content="{Binding Path=Identifier.Name, Mode=OneWay}" />
<ListBox ItemsSource="{Binding Path=Values, Mode=OneWay}"
Grid.IsSharedSizeScope="True">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="OptionColumn" />
<ColumnDefinition SharedSizeGroup="ValueColumn" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Option}" />
<TextBlock Grid.Column="1" Text="{Binding Value}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DockPanel>