Являются ли элементы управления уникальными даже без имени или идентификатора? - PullRequest
0 голосов
/ 27 апреля 2011

Если элементу управления не дано имя или идентификатор, он все еще уникален, или, что еще лучше, можно ли вообще получить к нему доступ в коде?Кроме того, если он все еще может быть идентифицирован, что определяет его идентичность по отношению к другим элементам управления, которые не имеют имен или идентификаторов?

Ответы [ 3 ]

3 голосов
/ 27 апреля 2011

Он по-прежнему уникален как каждый объект. Он наследуется от Object.

Чтобы увидеть хэш-код, с которым вы также можете сравнить другой объект, вы можете использовать следующий код:

пример XAML:

<Grid Name="BaseGrid">
    <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="73,34,0,0"  VerticalAlignment="Top" Width="75" />
    <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="73,101,0,0" VerticalAlignment="Top" Width="75" />
</Grid>

код для визуализации HashCode:

foreach (UIElement child in BaseGrid.Children)
{
    MessageBox.Show(child.GetHashCode().ToString());
}

но вернемся к вашему вопросу «что определяет его идентичность по отношению к другим элементам управления»: каждый объект является указателем на область памяти в куче. XAML просто сообщает компилятору, как загружать объекты. после загрузки на них ссылается адрес памяти.

3 голосов
/ 27 апреля 2011

Технически да, каждый экземпляр элемента управления является уникальным экземпляром класса. Вы можете получить доступ к управлению через ссылку. Хитрость заключается в определении того, какой уникальный элемент управления является тем, который вас интересует, поскольку у него нет имени или идентификатора.

Это ссылка на элемент управления, который уникальным образом идентифицирует элемент управления независимо от его идентификатора / имени, а также позиция элемента управления в иерархии элементов управления, которая определяет отношения между элементами управления. Например, корневой элемент управления может иметь ноль или более дочерних элементов управления, и каждый из этих элементов управления может иметь собственные дочерние элементы управления. Имя - это удобный способ найти элемент управления в иерархии и дать ему значимый идентификатор для взаимодействия с конкретным экземпляром элемента управления.

1 голос
/ 27 апреля 2011

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

Пожалуйста, проверьте этот ответ - Как найти элементы управления WPF по имени или типу? для получения подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...