2012-03-31 2 views
1

У меня есть страница xaml samplePage.xaml и ее соответствующий файл .cs samplePage.xaml.cs. На этой странице есть текстовое поле textBox1. Теперь я создаю экземпляр страницы:Как вы можете получить элемент xaml с помощью C#?

PhoneApp1.samplePage s = new PhoneApp1.samplePage(); 

и после этого, я хотел бы установить значение в текстовом поле с помощью вызова:

s.textBox1.Text = "whatever" 

, но оказывается, есть ошибка сообщение о том,

«PhoneApp1.samplePage» не содержит определения для «textBox1» и не метод расширения «textBox1» принимающую первый аргумент типа Ph oneApp1.samplePage»может быть найден (вы отсутствуете использование директивы или ссылку на сборку?)

Я хотел бы знать, как получить элемент XAML, используя C# код?

+0

Это действительно странно, я написал короткий тест и доступ к именованным элементам xaml из C# отлично работают здесь. Можете ли вы разместить больше кода, например. xaml вашего TextBox и местоположение ваших вызовов C#? – Andrej

+0

Я не думаю, что этот метод будет работать с NavigationService –

ответ

0

Вы текстовое поле, вероятно, личное или защищено. Добавить обертку на странице, чтобы выставить текстовое поле что-то вроде:

public TextBox TextBox1 
{ 
    get 
    { 
     return this.textBox1; 
    } 
} 

(ум случай)

Тогда просто использовать свойство из любого места вы хотите: s.TextBox1.Text = "whatever";

+0

это работает для меня. – yifei

0

Хороший вопрос, вы должны будете использовать XamlReader.Load, чтобы загрузить страницу/управления во время выполнения, то вы будете иметь возможность доступа к элементам управления в нем:

http://msdn.microsoft.com/en-us/library/cc189076(v=vs.95).aspx#using_xamlreaderload

http://blogs.silverlight.net/blogs/msnow/archive/2008/10/09/silverlight-tip-of-the-day-60-how-to-load-a-control-straight-from-xaml.aspx

+0

на самом деле я решил его по-другому, пока это хорошее решение. Благодаря! – yifei

Смежные вопросы