Это на самом деле не кастинг. Вам нужно найти ссылку на объект для элемента управления по имени, что можно сделать так:
MyCustControl control = (MyCustControl)frameworkElement.FindName("x4y3");
Где frameworkElement
- содержащее окно (или любая панель, подобная сетке). Из кода за окном, использование this
должно работать:)
См. Также этот вопрос , если вы планируете вместо этого динамически создавать элементы управления, что, как мне кажется, предлагает ваша схема именования Однако, если это так, FindName
на самом деле совсем не нужен. Вы бы просто сохраняли ссылки на все созданные элементы управления в двумерном массиве по мере их создания.
int[,] controls = new int[10, 10];
for (int x = 0; x < 10; x++)
{
for (int y = 0; y < 10; y++)
{
// Create new control and initialize it by whatever means
MyCustControl control = new MyCustControl();
// Add new control to the container
Children.Add(control);
// Store control reference in the array
controls[x, y] = control;
}
}
Затем, позже, вы можете просто получить доступ к элементу управления следующим образом:
controls[4, 3].IsSelected = true;