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

C#: WPF, UWP и Silverlight

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

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

11.07.2011, 21:23. Просмотров 3509. Ответов 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
kenny69
burning1ife
1359 / 1186 / 166
Регистрация: 21.09.2008
Сообщений: 3,340
Записей в блоге: 9
11.07.2011, 21:25 #2
как добавляете? код
0
SkarM
7 / 7 / 0
Регистрация: 28.10.2010
Сообщений: 220
11.07.2011, 21:34  [ТС] #3
C#
1
panel.Children.Add(user_control);
0
kenny69
burning1ife
1359 / 1186 / 166
Регистрация: 21.09.2008
Сообщений: 3,340
Записей в блоге: 9
11.07.2011, 21:40 #4
так вы же тогда по имени user_control и можете получить доступ к контролу)
0
SkarM
7 / 7 / 0
Регистрация: 28.10.2010
Сообщений: 220
11.07.2011, 21:45  [ТС] #5
Да весь прикол в том, что там добавляются динамически контролы с разными именами) И для поиска контрола я имею возможность использовать только строку с его названием)
Как в таком случае обратиться к контролу, если есть только строка-название его и все(опять таки, все это происходит автоматически и в цикле)?
0
kenny69
burning1ife
1359 / 1186 / 166
Регистрация: 21.09.2008
Сообщений: 3,340
Записей в блоге: 9
12.07.2011, 16:17 #6
обращайтесь либо по номеру элемента, в коллекции, либо по имени, либо по какому-то параметру, который вы присваиваете свойству Tag элемента в коллекции panel.Children
0
SkarM
7 / 7 / 0
Регистрация: 28.10.2010
Сообщений: 220
13.07.2011, 16:49  [ТС] #7
Ладно, сформулирую по другому: как динамически обратиться к контролу, если известна только величина типа string с его названием?
0
kenny69
burning1ife
1359 / 1186 / 166
Регистрация: 21.09.2008
Сообщений: 3,340
Записей в блоге: 9
13.07.2011, 22:41 #8
FrameworkElement.FindName

C#
1
var myTextBlock = (TextBlock)this.FindName("myTextBlock");
1
dioxidin
132 / 99 / 1
Регистрация: 21.11.2007
Сообщений: 544
14.07.2011, 14:08 #9
C#
1
var myTextBlock = panel.OfType<TextBlock>().Children.FirstOrDefault(item => item.Name == "myTextBlock");
..не?
0
SkarM
7 / 7 / 0
Регистрация: 28.10.2010
Сообщений: 220
14.07.2011, 16:38  [ТС] #10
Цитата Сообщение от kenny69 Посмотреть сообщение
FrameworkElement.FindName

C#
1
var myTextBlock = (TextBlock)this.FindName("myTextBlock");
Этот способ, конечно, хорош, но мне надо найти и поменять какое-то свойство контрола, а не получить его копию как тут.

Добавлено через 1 минуту
Цитата Сообщение от dioxidin Посмотреть сообщение
C#
1
var myTextBlock = panel.OfType<TextBlock>().Children.FirstOrDefault(item => item.Name == "myTextBlock");
..не?
Этот тоже позволяет только получить копию экземпляра, но не сам объект, насколько я понимаю.

Добавлено через 2 минуты
Может быть, подскажите, как осуществить тогда обратную привязку данных между var MytextBlock и самим искомым объектом? Ну и разрушить ее после выполнения действий необходимых.
0
kenny69
burning1ife
1359 / 1186 / 166
Регистрация: 21.09.2008
Сообщений: 3,340
Записей в блоге: 9
14.07.2011, 17:18 #11
из msdn: "Находит элемент по указанному имени идентификатора."
это не копия, это ссылка на объект.
0
SkarM
7 / 7 / 0
Регистрация: 28.10.2010
Сообщений: 220
14.07.2011, 18:09  [ТС] #12
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 минут
Эта ошибка вылазит при попытке сделать что-угодно с дочерними контролами этого юзерконтрола. пробовал поменять текст лейбла- тоже самое...
0
cvb222
2 / 2 / 0
Регистрация: 27.06.2011
Сообщений: 113
14.07.2011, 21:27 #13
Попробуй глянуть примеры с BindingMode.OneWayToSource; в MSDN
Либо использовать RelativeSource но это уже как то в самом XAML документе нужно делать
0
SkarM
7 / 7 / 0
Регистрация: 28.10.2010
Сообщений: 220
15.07.2011, 00:29  [ТС] #14
Все таки мне привязка не поможет. Надо найти именно способ обратиться и изменить свойство контрола. Подмена не прокатит.Сильно много придется подменять)) Это сильно скажется на производительности...
0
dioxidin
132 / 99 / 1
Регистрация: 21.11.2007
Сообщений: 544
15.07.2011, 10:57 #15
Цитата Сообщение от SkarM Посмотреть сообщение
Этот тоже позволяет только получить копию экземпляра
Ни тот ни другой не возвращает копию. Учите мат часть. C# - ссылочный язык. Чтобы получить копию, приходится изголяться.

ПС: в этом ключе уже ответили (про ссылки)... поздно заметил. Извините за дубль.
0
15.07.2011, 10:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2011, 10:57
Привет! Вот еще темы с ответами:

Кастом контрол - 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 видел один, в качестве примера,...


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

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

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