Dynamische Raster In Silverlight 2 in C#
Ich das einfügen muss UIElements in ein Raster, das nicht erst zur Laufzeit generiert. Genauer gesagt, muss ich hinzufügen UIElements zu den RowDefinitions ich erstellen, nachdem ich bestimmen, wie viele Elemente angezeigt werden müssen. Gibt es eine Möglichkeit, contorl das Raster.Row und Grid.Spalte und Gitter.RowSpan wie in den XAML-Code für Objekte in C#? Wenn ich dabei bin, über diese falsch ist, bitte lassen Sie mich wissen. Ich kann nicht mit einem StackPanel (ich bin erstellen einer dynamischen Akkordeon-panel und es verwirrt mit der animation).
Jetzt, was passiert ist, dass ich generieren die Anzahl der RowDefinitions zur Laufzeit und das hinzufügen von UIElements, wie die Kinder. Funktioniert das nicht, alle UIElements am Ende in der ersten Reihe geschichtet übereinander.
Hier ist ein Beispiel, was ich versuche:
public partial class Page : UserControl
{
string[] _names = new string[] { "one", "two", "three" };
public Page()
{
InitializeComponent();
BuildGrid();
}
public void BuildGrid()
{
LayoutRoot.ShowGridLines = true;
foreach (string s in _names)
{
LayoutRoot.RowDefinitions.Add(new RowDefinition());
LayoutRoot.Children.Add(new Button());
}
}
}
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Abgesehen von dem Gitter nicht wirklich das richtige Werkzeug für den job (ein ListView wäre) müssen Sie auf die Taste, die Zeile, zu der es gehört.
Der beste Weg, das zu tun, was Sie suchen, Folgen dem Muster unten:
Seite.xaml:
Seite.xaml.cs:
Damit baut die Zeilen dynamisch aus dem Inhalt der Zeichenfolge-array. In Zukunft eine noch bessere Möglichkeit wäre, eine ObservableCollection wo T implementiert INotifyPropertyChanged. Dies teilt das DataGrid aktualisieren Sie die Zeilen, wenn Sie hinzufügen oder entfernen ein Element aus der Auflistung, und auch wenn die Eigenschaften von T ändern.
Zur weiteren Anpassung des UIElements verwendet, um Dinge anzuzeigen, die Sie verwenden können, eine DataGridTemplateColumn:
Ich habe noch nie verwendet dieses Zeug, aber sollte nicht Sie sein, die hinzufügen-Schaltfläche, um die RowDefinitions, statt von den Kindern? (ist nur eine logische Beobachtung)