2009-06-05 6 views
1

Ich habe Objekte, die ich an eine ListBox in WPF binde. Hier ist, was das Endergebnis sollte folgendermaßen aussehen:Anzeigen eines datengebundenen StackPanels in einem DataTemplate

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

im Wesentlichen ein Datatemplate für die gesamte variable ich habe, und dann die Opt/Value-Combo hat einen eigenen Datatemplate ist. Ich versuche, die Liste der Werte so einfach wie möglich anzuzeigen.

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

für Werte Die Bindung ist derzeit nur ein <Grid> mit 2 <Label> ‚s und Listview eine Menge Funktionen, die ich beobachten tun sie nicht, wie die Grenze Styling, Auswahl hat, und so, wenn alles, was ich wirklich will in der Lage sein, mit einer Liste zu arbeiten.

Ich habe versucht, die Elemente an ein Stackpanel zu binden, konnte aber nicht in XAML arbeiten. Ich nehme an, eine andere Lösung ist, was ich tue, und schreibe die <Style> für ListView um. Irgendwelche Vorschläge zur richtigen Vorgehensweise?

Antwort

7

Es klingt sicherlich wie etwas, das man mit einem ListBox tun können, oder einem Itemscontrol, wenn man sie wählbar sein nicht will. Wir können auch die beigefügte Eigenschaft IsSharedSizeScope verwenden, um unsere Spalten formatiert und gleichmäßig zu halten. Werfen Sie auch einen Blick auf die Vererbung Highhigchy am unteren Ende des ListBox-Links, damit Sie feststellen können, welche Art von Liste Sie für verschiedene Szenarien benötigen.

versuchen, etwas wie folgt aus:

<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

Items war genau das, was ich brauchte. Vielen Dank. –