|
Модераторы: Partizan, gambit |
|
lllJollyRogerlll |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 20.11.2014 Репутация: нет Всего: нет |
Доброго времени суток!
Сразу предупреждаю, код ниже был написан чисто в учебных целях. Прошу не задавать вопросы, вроде: "Зачем вообще это нужно?" и т.д. Для интересующихся этим вопросом скажу откровенно - любопытно как можно реализовать подобного рода логику. Программированием увлекаюсь недавно, прошу строго не судить (хотя можно и строго, не обижусь ). Сейчас начал ковырять WPF и наткнулся на такого рода проблему - определяю атрибут Uid для объектов Label, далее хочу в коде через итерацию назначать данным Label'ам значения. То есть запустил итерацию и по целочисленному значению в коде ищу нужный мне Лейбл. Но как оказалось в WPF такой логики не предусмотрено. Подсмотрев кое что на stackowerflow наковырял вот такую расширяющую функцию:
На этом моя проблема не решилась. Долго бодался с тем что VisualTreeHelper.GetChildrenCount() не возвращал количество наследников. Пришлось добавить ивент txtBlockWithLabels_Loaded в мейн видоу и в него поместить вызов вышеуказанной функции.
Но и теперь остались вопросы. var el = VisualTreeHelper.GetChild(parent, i) as UIElement; <-- в данном фрагменте кода преобразование не происходит и переменная el остается null. При явном преобразовании компилятор ругается. Почему? Ведь насколько я понимаю класс UIElement расширяет класс DependencyObject а Лейбл в свою очередь расширяет UIElement. Должно работать. Разметка XAML ниже. Прошу, разъясните где я допустил ошибку.
P.S. УПС! Похоже случайно не там разместил тему. Хотел тут --> http://forum.vingrad.ru/forum/dotnet-WPF.html Прошу простить, на форумах редкий гость. Переместить теперь не знаю как. Это сообщение отредактировал(а) lllJollyRogerlll - 25.11.2016, 06:09 |
||||||
|
|||||||
Hobotanius |
|
||||||
Шустрый Профиль Группа: Участник Сообщений: 51 Регистрация: 24.7.2008 Репутация: нет Всего: нет |
Здравствуйте. Не уверен, что до конца понял чего Вы хотели добиться, но уверен что есть более лёгкий способ решения Вашей задачи. Например можно сделать так:
В App.xaml
В декларации Вашего окна:
В коде Вашего окна
Теперь всё работает без всяких: public static UIElement FindUid(this DependencyObject parent, string uid) Если это не совсем то что Вы хотели добиться, то опишите задачу в общем. Присоединённый файл ( Кол-во скачиваний: 0 ) WpfApplicationVUI.7z 27,13 Kb |
||||||
|
|||||||
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |