2012-03-27 11 views
0

Ich habe eine <Grid> eingerichtet, so wie ich will mit jeder Zelle mit einem <Label>.Gitter der Etiketten Bind Inhalt

Ich möchte dies, weil ich möchte, dass die Etiketten eine feste Position auf dem Bildschirm haben. Zum Beispiel, wenn ich ein Array {"One, "Two", "Three"} sollte es auf dem Bildschirm gehen, wie:

[One] _ __ _ __ _ _ [Two] _ __ _ __ _ _ [Drei]

Wenn das Array {"One, "Three"} ist, mag ich den Platz für zwei wie so reserviert:

[One] _ __ _ __ _ __ _ __ _ __ _ __ _ ___ [Drei]

Das Gitter behandelt dies schön.

Jetzt möchte ich den Inhalt dieser Etiketten an eine Struktur im Code-Behind binden und kämpfe um das Etikett, um an einen bestimmten Index der ObservableCollection in meinem Code-Behind zu binden.

Antwort

2

einfach wie diese binden (wenn Ihre Sammlung als Ressource definiert ist):

<Label Content="{Binding Source={StaticResource myCollection}, Path=[0]}"/> 
<Label Content="{Binding Source={StaticResource myCollection}, Path=[1]}"/> 

und vielleicht verwenden die einfachere TextBlock- statt:

<TextBlock Text="{Binding Source={StaticResource myCollection}, Path=[0]}"/> 
<TextBlock Text="{Binding Source={StaticResource myCollection}, Path=[1]}"/> 

Wenn Ihre Sammlung ist eine Eigenschaft Ihres Objekts DataContext (z. B. Collection genannt) binden wie folgt:

<Label Content="{Binding Path=Collection[0]}"/> 
<Label Content="{Binding Path=Collection[1]}"/> 
+0

Danke! Können Sie mehr erklären, warum der TextBlock einfacher ist? – Ternary

+0

Siehe [hier] (http://stackoverflow.com/questions/59099/what-is-the-difference-between-the-wpf-textblock-element-and-label-control) und vielleicht [hier] (http: //joshsmithonwpf.wordpress.com/2007/07/04/differences-between-label-and-textblock/). – Clemens

+0

kann ich nicht zum arbeiten kommen. Die Auflistung ist eine ObservableCollection in meiner Datenkontextklasse. Es ist keine StaticResource. – Ternary

0

Sie könnten Eigenschaften bereitstellen, die den Wert der gewünschten Indizes aus der Auflistung zurückgeben. Z.B. Binden Eine zu so etwas wie:

public string OneValue { get { return Collection[0]; } } 
+0

Interessante expose eine Eigenschaft für jede Zelle? – Ternary

+0

Gibt es trotzdem, dass der XAML einen Parameter in die Bindungseigenschaft übergibt? Also könnte ich sagen "{Binding Value (2)}" wobei 2 der Index ist? – Ternary

Verwandte Themen