Доступ к подэлементам пользовательского контроля из кода - PullRequest
0 голосов
/ 21 апреля 2011

Я создал пользовательский элемент управления в Expression Blend, который состоит из нескольких TextBlock s, помещенных в Grid.Теперь я добавил этот пользовательский элемент управления на свою телефонную страницу в Visual Studio и хочу получить доступ и изменить текст этих текстовых блоков из кода C #.

Как получить доступ к этим субэлементам в коде?

Я думал, что смогу сделать что-то вроде этого:

MyCustomControl.TextBlock1.Text = "New Text";

Но это не так просто.Так как мне это сделать?

Ответы [ 3 ]

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

Свойство MyCustomControl.TextBlock1 существует, но internal, а не public. Вы можете использовать MyCustomControl.FindName("TextBlock1") as TextBlock, чтобы найти ресурсы по имени.

0 голосов
/ 31 октября 2017

Попробуйте код ниже, оба должны работать для вашего требования:

Control subControl1 = (Control)MyCustomControl.Controls[0];

или

TextBox subControl1 = (TextBox)MyCustomControl.Controls[0];

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

Если вы все еще столкнулись с какой-либо проблемой, не стесняйтесь спрашивать.

0 голосов
/ 21 апреля 2011

Работает ли GetTemplateChild(string name);?Вы должны иметь возможность использовать его для доступа к элементам шаблона вашего элемента управления

...