2009-09-08 10 views
11

In meinem Moderator habe ich diese Eigenschaft:Wie binde ich eine Liste <string> an ein ItemsControl?

public List<string> PropertyNames { get; set; } 

Und ich will mit einem die Namen zur Liste aus Items/Datatemplate wie folgt aus:

<ItemsControl ItemsSource="{Binding PropertyNames}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Value}"/> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

Da die generische Liste Eigenschaften nicht genannt hat , wie referenziere ich den Wert in meiner verbindlichen Aussage?

Antwort

29

lassen Sie mich das beantworten, es ist nur {Binding}.

+0

+1. Ja. Ich habe es mit 'Path = ...' verwechselt, wo dot funktioniert. –

+9

FYI, '.' funktioniert entweder mit oder ohne 'Path ='. Leer wird implizit als '.' Interpretiert. Sie können also {Binding}, {Binding.} Oder {Binding Path =.} Schreiben. Beachten Sie, dass {Binding Path =} nicht funktioniert - Sie erhalten einen XAML-Compilerfehler. –

+2

haha. Die Frage wird um 11:15 Uhr gestellt und genau eine Person nach einer Minute beantwortet. Dann wird die Antwort akzeptiert :) gut gemacht. –

0

Ein einfacher Weg, um die gleiche Sache zu tun ist einfach zu verwenden:

<ItemsControl ItemsSource="{Binding PropertyNames}"/> 

standardmäßig wird dies eine vertikale Stackpanel erstellen und jedes Element in einem eigenen Textblock hinzuzufügen. Gemäß MSDN funktioniert dies für eines der folgenden Elemente:

  • Ein String.
  • Ein DateTime-Objekt.
  • Ein UIElement-Objekt.
  • Ein Panel-Steuerelement, das eine Ellipse und einen TextBlock enthält.
Verwandte Themen