Comment accéder au contrôle programmatique dans la grille WPF par ligne et index de colonne?
une fois que les commandes ont été ajoutées à une grille WPF, y a-t-il un moyen de Les accéder programmatiquement par ligne et/ou par index de colonne? Quelque chose du genre:
var myControl = (object)MyGrid.GetChild(int row, int column);
... où GetChild
est la méthode que j'aimerais avoir!
5 réponses
il n'y a pas de méthode intégrée pour cela, mais vous pouvez facilement le faire en regardant dans la collection des enfants:
myGrid.Children
.Cast<UIElement>()
.First(e => Grid.GetRow(e) == row && Grid.GetColumn(e) == column);
Cette réponse va vous aider
int rowIndex = Grid.GetRow(myButton);
RowDefinition rowDef = myGrid.RowDefinitions[rowIndex];
la propriété des enfants de l'objet grid vous donnera une collection de tous les enfants de la grille (de la classe Panel).
en ce qui concerne l'obtention des coordonnées dans la grille, regardez les méthodes statiques dans la classe de grille (GetRow() & GetColumn()).
l'Espérance qui vous met hors tension dans la bonne direction.
système:: Windows:: Controls:: Grid^ myGrid = nullptr; Système::Windows::Controls:: UserControl^ pUserControl = nullptr;
myGrid = m_DlgOwnedObjAdmin->GrdProperties;
if (myGrid->Children->Count > 0)
{
pUserControl = (System::Windows::Controls::UserControl^)myGrid->Children->default[0];
if (pUserControl != nullptr)
{
if (bValue == true)
pUserControl->Visibility = System::Windows::Visibility::Visible;
else
pUserControl->Visibility = System::Windows::Visibility::Collapsed;
}
}
vous pouvez simplement donner votre colonne de grille / rangée un nom
<Grid x:Name="MainGridBackground" Grid.Column="0"/>
et y accéder programmatiquement en l'appelant et en utilisant"."
MainGridBackground.Background = canvasUCInstance.rectanglePreview.Fill;