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?

¿Fue útil?

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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top