2015-02-03 3 views
0

У меня есть динамически созданная кнопка на C# с использованием XAML.Изменение свойства контента из динамически созданной кнопки

Часть XAML:

<Grid Name="mainGrid" Grid.Row="1"></Grid> 

и я создал кнопку с этим кодом в C#:

Button dugme = new Button(); 
dugme.Content = "tap me"; 
dugme.Tapped += dugme_Tapped; 
mainGrid.Children.Add(dugme); 

Как я теперь могу изменить кнопку Content (текст) из "нажмите меня", чтобы «похлопал ok "в этом случае.

void dugme_Tapped(object sender, TappedRoutedEventArgs e) 
{ 
    //should I use binding? 
} 
+0

Это событие OnClick? – LPs

+0

Я предполагаю, что вы хотите сделать это в нажатом событии кнопки. Вы можете отправить отправителя на Button и установить свойство Content в любое удобное для вас время. Но я бы рекомендовал избавиться от этого кода и связать контент Button с некоторым свойством в вашей модели viewmodel. – user3596113

ответ

1

Подобно тому, как вы установите Content свойство "tap me" при создании кнопки, так же вы можете установить его в обработчик события:

void dugme_Tapped(object sender, TappedRoutedEventArgs e) 
{ 
    ((Button)sender).Content = "tapped ok"; 
} 

Тем не менее, вы спросите в кодовом комментарий " я должен использовать привязку? " и, поскольку это WPF, ответ по умолчанию «да». Но как точно вы бы сделали это, здесь трудно сказать, учитывая отсутствие контекста. Непонятно, почему вы добавляете экземпляр Button программно (выполнение которого само по себе не является идиоматическим в WPF).

Если вы считаете, что у вас есть веская причина отказаться от инициализации и привязки на основе XAML для создания экземпляра Button, вы также можете продолжить этот подход для установки свойства Content. В этом случае приведенный выше пример должен работать на вас.

Если вам нужен более ориентированный на XAML подход, вы, вероятно, должны задать другой вопрос, начиная с подробного объяснения вашего сценария и выяснения того, как инициализировать кнопку более WPF-способом, а также как поддерживать состояние Content свойства этой кнопки.

0

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

Что касается изменения текста, вы можете просто установить свойство содержимого своей кнопки в обработчике событий.

По умолчанию, объект, который уволил событие передается в качестве параметра «отправителя» из вас работать, так что все, что вам нужно это:

void dugme_Tapped(object sender, TappedRoutedEventArgs e) 
{ 
    (sender as Button).Content = "tapped ok"; 
} 

Как обработчика событий.

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