Как изменить TextBlock Text из кода позади? - PullRequest
1 голос
/ 10 октября 2010

У меня есть пользовательский элемент управления. В файле generic.xaml есть панель стека с кнопкой и текстовым блоком:

<StackPanel>
<TextBlock x:Name="StatusText" />
</StackPanel>

Тогда у меня есть

public class MyClass : Control
{
// Constructor etc.

public static readonly DependencyProperty StatusTextProperty = DependencyProperty.Register("StatusText", typeof(TextBlock), typeof(MyClass), null);

public TextBlock StatusText
{
get { return (TextBlock)this.GetValue(StatusTextProperty); }
set { SetValue(StatusTextProperty, value); }
}
}

Существует, если с некоторой логикой это происходит после нажатия кнопки. Как мне изменить свойство Text TextBloc? Я думал, что я могу сделать что-то вроде этого

StatusText.SetValue(TextBlock.TextProperty, "Some text here.");

Но всегда возвращается NullReferenceException (ссылка на объект не установлена ​​на экземпляр объекта.)

Должен ли я использовать PropertyChangedCallback () для свойства зависимости или что еще мне нужно? Я что-то упустил; -)

Ответы [ 2 ]

1 голос
/ 10 октября 2010

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

  1. Измените тип свойства зависимости с TextBlock на строку.

  2. Свяжите свойство Text элемента TextBlock в шаблоне элемента управления со свойством зависимости с помощью выражения привязки TemplateBinding. Что-то вроде:

Затем вы можете просто установить текст, который будет отображаться в свойстве вашего элемента управления.

Надеюсь, это поможет ...

Chris

0 голосов
/ 10 октября 2010

Вы можете ввести свой вопрос в Google и найти ответ в несколько раз быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...