Форум программистов, компьютерный форум, киберфорум
Наши страницы

C#: WPF, UWP и Silverlight

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.88
SkarM
7 / 7 / 0
Регистрация: 28.10.2010
Сообщений: 220
#1

Найти контрол на панели - C# WPF

11.07.2011, 21:23. Просмотров 3513. Ответов 18
Метки нет (Все метки)

Надо найти на StackPanel ранее добавленный туда контрол, и отредактировать его)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2011, 21:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти контрол на панели (C# WPF):

Отсутствует кастомный контрол в панели Toolbox - C# WPF
используется VS2012 все просто - добавляю собственный UserControl (WPF), пускай он будет пустой. проект компилируется - без ошибок....

Контрол - C#
Простите заранее, за вопрос. Встречал в литературе такой контрол как постраничный элемент, т е примерно так вы нажимаете Next и Back и...

Контрол на WPF - C# WPF
Есть контрол написанный на WinForms, переделываю его на WPF, не знаю как сделать некоторые вещи. Контрол на WinForms: public class...

Написать контрол. - C#
Хочу написать контрол для WinForms. Вот только как это сделать, незнаю. Знаю только, что класс контролла должен быть унаследован от Control.

.NET 4.x Контрол в WPF - C# WPF
Написать программу на языке C# реализующую элемент управления (Control) WPF в виде отдельной динамической библиотеки. Элемент...

Свой контрол - C# WPF
Всем доброго времени суток! Начал изучать WPF, но более-менее вразумительную инфу нашёл лишь на Intuit'е, да и то по SilverLight, а не по...

18
SkarM
7 / 7 / 0
Регистрация: 28.10.2010
Сообщений: 220
15.07.2011, 11:11  [ТС] #16
Ну пробывал я уже работать как с сылкой. На исходной панели никаких изменений не видно...
0
dioxidin
132 / 99 / 1
Регистрация: 21.11.2007
Сообщений: 544
15.07.2011, 11:28 #17
Цитата Сообщение от SkarM Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
                    BitmapImage myBitmapImage1 = new BitmapImage();
                    myBitmapImage1.BeginInit();
                    myBitmapImage1.UriSource = new Uri(@"D:\test.jpg");
                    myBitmapImage1.EndInit();
                    object wantedNote = panel.FindName(en.id);
                    if (wantedNote is userControl111)
                    {
                        userControl111 ttt = wantedNote as userControl111;
                        ttt.foto.Source = myBitmapImage1;
                       
                    }
Где именно я делаю неправильно? Обновление картинки не происходит.

Странно, но ошибка вылезает все таки на if (wantedNote is userControl111)(проверил через ветку else), хотя на панель кроме контролов данного типа ничего не добавляеться...

Ошибка на строке ttt.foto.Source = myBitmapImage1; "В экземпляре объекта не задана ссылка на объект."

Добавлено через 10 минут
Эта ошибка вылазит при попытке сделать что-угодно с дочерними контролами этого юзерконтрола. пробовал поменять текст лейбла- тоже самое...
НЕ ДЕЛАЙТЕ ТАК: userControl111 ttt = wantedNote as userControl111;
Использование оператора "as" без последующей проверки на NULL - смертный грех, ведущий к умопомрачительным багам. В данном случае все просто, вроде бы.
C#
1
2
3
4
5
6
if (wantedNote != null && wantedNote is userControl111)
                    {
                        userControl111 ttt =  (userControl111)wantedNote;
                        ttt.foto.Source = myBitmapImage1;
                       
                    }
Наверняка в данном случае wantedNote изначально NULL.

Добавлено через 2 минуты
Чему равно "en.id"?

Добавлено через 4 минуты
Кстати, "panel.FindName(en.id)" не будет работать наверняка, т.к. скорее всего имена дочерних контролов не регистрируются в NameScope'е панели.
Как задаются имена контролов и регистрируются ли они?

Правильнее все-таки искать в коллекции Children, причем, как у же написано выше, удобнее всего записывать в Tag дочерних контролов некий ключ, по ктоторому и искать.
1
Sting
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 52
15.07.2011, 22:49 #18
Добавлено через 1 минуту
Цитата Сообщение от SkarM Посмотреть сообщение
Ладно, сформулирую по другому: как динамически обратиться к контролу, если известна только величина типа string с его названием?
C#
1
 var myTextBlock = panel.Children["x:Name"];
0
dioxidin
132 / 99 / 1
Регистрация: 21.11.2007
Сообщений: 544
21.07.2011, 14:12 #19
Вот так:
C#
1
 var myTextBlock = panel.Children.OfType<TextBlock>().FirstOrDefault(block => block.Name == "Известное имя");
0
21.07.2011, 14:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2011, 14:12
Привет! Вот еще темы с ответами:

Кастом контрол - C# WPF
Начал изучать wpf. Разбираюсь с custom control'ами. Создаю свой контрол(простую кнопку) от класса Control. Вопрос в следующем - можно...

Подскажите контрол - C# WPF
мне нужен контрол в который будут динамически добавляться радиобатоны или чекбоксы, они будут добавляться сверху вниз, но с ограничением -...

.NET 4.x Контрол меню - C# WPF
Добрый день. Подскажите, как решить следующую задачу или хотя бы в каком направлении копать? Есть горизонтально меню (RadioButton). 10...

.NET 3.x Ищу контрол: NumericUpDown - C# WPF
Никто не видел контрола NumericUpDown для WPF 3.5? А то везде, что находил, все для 4.0 версии. На MSDN видел один, в качестве примера,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru