Question

Je suis des objets que je Databinding à un ListBox dans WPF. Voici ce que le résultat final devrait ressembler à:

-------------------------------
| Name    | Opt1    |  Value1 |
|         | Opt2    |  Value2 |
|         | Opt3    |  Value3 |
|         | Opt4    |  Value4 |
-------------------------------

Essentiellement, j'ai un DataTemplate pour la variable globale, puis le combo Opt / valeur a sa propre DataTemplate. Je suis en train d'afficher la liste des valeurs aussi simple que possible.

<Label Content="{Binding Path=Identifier.Name, Mode=OneWay}" />
<ListView Grid.Column="1" HorizontalAlignment="Stretch" 
          ItemsSource="{Binding Path=Values, Mode=OneWay}" />

La liaison pour les valeurs actuellement seulement <Grid> avec 2 de <Label> et ListView a beaucoup de fonctionnalités que je ne regarde pas, comme le style des frontières, des sélections, et ce, quand tout ce que je veux vraiment est de pouvoir DataBind au moyen d'un Liste.

J'ai essayé de DataBind les articles à un StackPanel mais n'a pas pu le faire fonctionner en XAML. Je suppose une autre solution est de faire ce que je fais, et réécrire le <Style> pour ListView. Toutes les suggestions sur la bonne façon de le faire?

Était-ce utile?

La solution

Il ressemble certainement quelque chose que vous pouvez faire avec un ListBox , ou un ItemsControl si vous ne voulez pas qu'ils soient sélectionnables. Nous pouvons également utiliser le IsSharedSizeScope attached propriété pour garder nos colonnes et même formatées. De plus, jetez un oeil à l'héritage Higharchy au bas du lien ListBox, il devrait vous aider à déterminer quel type de liste que vous avez besoin pour différents scénarios.

Essayez quelque chose comme ceci:

<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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top