Ich habe ein Gitter und muss ein Steuerelement dynamisch ersetzen, das sich in einer der Zellen befindet. Ich weiß nicht, was die Syntax betrifft, um die Gitterzelle genau zu bestimmen, denn wo gebe ich die Zeilen- und Spaltennummer ein, damit ich alles löschen kann, was darin ist.Silverlight: Inhalt einer bestimmten Zelle in einem Gitter löschen
Antwort
Wenn Sie die Zelle kennen und rudern, dass die Steuerung in lebt, können Sie eine LINQ Aussage, um es zu greifen.
Hier ist eine LINQ-Anweisung, die die erste Kontrolle erhalten, die in Spalte 3 ist, Zeile 4.
var control = (from d in grid.Children
where Grid.GetColumn(d as FrameworkElement) == 3
&& Grid.GetRow(d as FrameworkElement) == 4
select d).FirstOrDefault();
Sie können die untergeordneten Elemente des Gitters iterieren, indem Sie ihre Zeilen- und Spaltenwerte mit den Methoden Grid.GetRow und Grid.GetColumn überprüfen und den Zielinhalt ersetzen, wenn die Werte übereinstimmen. Hier ist ein Beispiel in WPF getestet, sollte aber in Silverlight arbeiten:
<Grid x:Name="SampleGrid">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Rectangle Fill="Red" Width="20" Height="20" Grid.Row="0" Grid.Column="0" />
<Rectangle Fill="Orange" Width="20" Height="20" Grid.Row="0" Grid.Column="1" />
<Rectangle Fill="Yellow" Width="20" Height="20" Grid.Row="0" Grid.Column="2" />
<Rectangle Fill="Green" Width="20" Height="20" Grid.Row="1" Grid.Column="0" />
<Rectangle Fill="Blue" Width="20" Height="20" Grid.Row="1" Grid.Column="1" />
<Rectangle Fill="Indigo" Width="20" Height="20" Grid.Row="1" Grid.Column="2" />
<Rectangle Fill="Violet" Width="20" Height="20" Grid.Row="2" Grid.Column="0" />
<Rectangle Fill="Black" Width="20" Height="20" Grid.Row="2" Grid.Column="1" />
<Rectangle Fill="Gray" Width="20" Height="20" Grid.Row="2" Grid.Column="2" />
<Button Grid.Row="3" Grid.ColumnSpan="3" Margin="10" x:Name="Swap" Click="Swap_Click" Content="Swap"/>
</Grid>
im Ereignishandler:
private void Swap_Click(object sender, RoutedEventArgs e)
{
Ellipse newEllipse = new Ellipse() { Fill = new SolidColorBrush(Colors.PaleGoldenrod), Width = 20d, Height = 20d };
for (int childIndex = 0; childIndex < this.SampleGrid.Children.Count; childIndex++)
{
UIElement child = this.SampleGrid.Children[childIndex];
if (Grid.GetColumn(child) == 2 && Grid.GetRow(child) == 2)
{
this.SampleGrid.Children.Remove(child);
Grid.SetRow(newEllipse, 2);
Grid.SetColumn(newEllipse, 2);
this.SampleGrid.Children.Add(newEllipse);
}
}
}
haben Hinzuzufügen ist, dass, wenn Sie eine große Anzahl oder Reihe haben/cols Sie könnten eine break-Anweisung hinzufügen möchten die übrigen Kinder zu vermeiden Iterieren sobald du dein Ziel getroffen hast. –
Sie de control erinnern kann, dass ich in dem Gitter eine private Variable Zugabe setzen:
private Control controlCentral = null;
Ordnen Sie als Nächstes dieser Variablen das Steuerelement zu, das Sie dem Raster hinzufügen, sodass Sie Remove verwenden können, um die Steuerung des Rasters zu entfernen.
Der nächste Code ersetzen die Steuerung der Zeile 0 Spalte 1:
private void MostrarControlCentral(Control control)
{
if (control != null)
{
control.SetValue(Grid.RowProperty, 0);
control.SetValue(Grid.ColumnProperty, 1);
}
this.LayoutRoot.Children.Remove(this.controlCentral);
if (control != null)
{
this.LayoutRoot.Children.Add(control);
}
this.controlCentral=control;
}
- 1. Gitter der Etiketten Bind Inhalt
- 2. ein Gitter RowDefinition Höhe in Grid nach seinem Inhalt in Silverlight Einstellung
- 3. Force-Zelle "Inhalt" in Bootstrap-Thumbnail-Tabelle zu löschen
- 4. den Text in einer bestimmten Zelle in einem QTableWidget abrufen?
- 5. Inhalt des ungeschützten spezifischen Bereichs in einem geschützten Blatt löschen
- 6. Lesen Zelle Inhalt in einem Ipython-Notebook
- 7. Tkinter: Gitter oder Pack in einem Gitter?
- 8. Inhalt und Formatierung einer Excel-Zelle mit einem einzigen Befehl löschen
- 9. Silverlight-how zu öffnen Gitter Details in einer neuen Seite
- 10. Ändern Sie den Inhalt einer Zelle aus einer anderen Zelle
- 11. Eindeutiger Inhalt eines Bereichs, wenn Zelle einen bestimmten Text
- 12. kann keine Formel in einer bestimmten Zelle
- 13. Zählrahmen in einem 2D-Gitter
- 14. Löschen einer bestimmten Zeile in einem MS Word-Dokument
- 15. Löschen aller Komponenten einer bestimmten Klasse in einem Formular
- 16. Word VBA - Löschen einer Form in einem bestimmten Absatz
- 17. Alles nach einem bestimmten Wort in einer SQL-Zeichenfolge löschen
- 18. Asp.net MVC-Gitter mit jeder Zelle mit einem eigenen Datensatz
- 19. Java - Hintergrundfarbe einer bestimmten Zelle Einstellung
- 20. Python Löschen einer bestimmten Zeilennummer
- 21. Get HTML-Inhalt einer Seite mit Silverlight
- 22. Inhalt einer Datei in Java löschen
- 23. Löschen hervorgehobene Zelle in Jtable
- 24. Kendo Gitter löschen - Bestätigungsfenster Probleme
- 25. Siehe eine Zelle auf einem anderen Blatt mit dem Inhalt einer anderen Zelle
- 26. Schreiben Sie bestimmte Daten in einer Zelle abhängig vom Inhalt einer anderen Zelle in Pandas
- 27. Rendern von HTML-Inhalt in Silverlight-Anwendung
- 28. Löschen einer bestimmten Zeile aus einer Textdatei?
- 29. Swipe löschen UITableView Zelle
- 30. Autosizing ComboBox Dropdown-Liste Inhalt in Silverlight
Nett - noch einmal LINQ macht Schleifen überflüssig. –