2009-06-05 6 views
1

J'ai des objets liés à une ListBox dans WPF. Voici ce que le résultat final devrait ressembler à:Affichage d'un StackPanel lié aux données à l'intérieur d'un DataTemplate

 
------------------------------- 
| 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. J'essaie d'afficher la liste des valeurs aussi simplement 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 est actuellement seulement <Grid> avec 2 <Label> « s 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 à être capable de créer une base de données en utilisant une liste.

J'ai essayé de numériser les éléments sur un panneau de pile, mais je n'ai pas réussi à le faire fonctionner en XAML. Je suppose qu'une autre solution consiste à faire ce que je fais, et réécrire le <Style> pour ListView. Des suggestions sur la bonne façon de le faire?

Répondre

7

Cela 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 la propriété attachée IsSharedSizeScope pour garder nos colonnes au format et même. Jetez également un coup d'œil à l'héritage Higharchy en bas du lien ListBox, il devrait vous aider à déterminer le type de liste dont 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> 
+0

ItemsControl était exactement ce que je avais besoin. Merci. –

Questions connexes