Получение ячейки сетки и очистка всех элементов управления в ней - PullRequest
1 голос
/ 07 июля 2011

У меня есть сетка с двумя столбцами и несколькими строками, каждая ячейка содержит несколько элементов управления.Среди этих элементов управления у меня есть кнопка, которая, когда я нажимаю ее, удаляет все элементы управления в текущей ячейке сетки.Как я могу получить индекс ячейки сетки, в которой находится моя кнопка, и как я могу удалить все элементы управления в этой ячейке?

Ответы [ 2 ]

3 голосов
/ 07 июля 2011

Это работает для вас?вам нужно будет добавить оператор using для System.Linq

//get the row and column of the button that was pressed.
var row = (int)myButton.GetValue(Grid.RowProperty);
var col = (int)myButton.GetValue(Grid.ColumnProperty);

//go through each child in the grid.
foreach (var uiElement in myGrid.Children)
{ //if the row and col match, then delete the item.
    if (uiElement.GetValue(Grid.ColumnProperty) == col && uiElement.GetValue(Grid.RowProperty) == row)
            myGrid.Children.Remove(uiElement);
}
1 голос
/ 22 апреля 2014

используя linq и расширяя предыдущий ответ, обратите внимание на ToList (), чтобы вы могли немедленно удалить элемент

//get the row and column of the button that was pressed.
var row = (int)myButton.GetValue(Grid.RowProperty);
var col = (int)myButton.GetValue(Grid.ColumnProperty);

//go through each child in the grid.
//if the row and col match, then delete the item.
foreach (var uiElement in myGrid.Children.Where(uiElement => (int)uiElement.GetValue(Grid.ColumnProperty) == col && (int)uiElement.GetValue(Grid.RowProperty) == row).ToList())
{
    myGrid.Children.Remove(uiElement);
}
...