删除WPF网格中的最后一行
我要删除网格的最后一行。我希望最后一行删除包含“2”的行。但是,无论我删除第0行还是第1行,第0行始终被删除。我怀疑我遗漏了一些关于行与网格的微妙之处。我做错了什么:删除WPF网格中的最后一行,wpf,grid,row,controls,Wpf,Grid,Row,Controls,我要删除网格的最后一行。我希望最后一行删除包含“2”的行。但是,无论我删除第0行还是第1行,第0行始终被删除。我怀疑我遗漏了一些关于行与网格的微妙之处。我做错了什么: // Create row 0 RowDefinition row = new RowDefinition(); row.Height = GridLength.Auto; myGrid.RowDefinitions.Add(row); // Add
// Create row 0
RowDefinition row = new RowDefinition();
row.Height = GridLength.Auto;
myGrid.RowDefinitions.Add(row);
// Add someting to it
TextBox tb = new TextBox();
tb.Text = "1";
Grid.SetColumn(tb, 0);
Grid.SetRow(tb, 0);
myGrid.Children.Add(tb);
// create row 1
row = new RowDefinition();
row.Height = GridLength.Auto;
myGrid.RowDefinitions.Add(row);
// Add something to it
tb = new TextBox();
tb.Text = "2";
Grid.SetColumn(tb, 0);
Grid.SetRow(tb, 1);
myGrid.Children.Add(tb);
// Delete row 1 (second row 0-indexed) <<< only row 0 is deleted
myGrid.RowDefinitions.RemoveAt(1);
同样的结果。感谢您的帮助。当您从网格中删除一行时,它不会删除该行上的子行,您必须自己删除。您可以尝试迭代网格的子元素,并删除行值等于要删除行的任何元素
var rowToDelete = 3;
foreach (var element in myGrid.Children)
{
if(Grid.GetRow(element) == rowToDelete)
{
myGrid.Children.Remove(element);
}
}
不要在WPF的过程代码中创建或操作UI元素。这就是XAML的用途。@HighCore我想根据某些条件动态添加/删除行,有没有办法只在XAML中这样做?我想这正是代码隐藏的目的。不,代码隐藏不是为了这个。不需要添加或删除网格行或列,也不被认为是一种良好的做法。
var rowToDelete = 3;
foreach (var element in myGrid.Children)
{
if(Grid.GetRow(element) == rowToDelete)
{
myGrid.Children.Remove(element);
}
}