从动态创建的按钮更改内容属性

时间:2015-02-03 06:55:31

标签: c# wpf xaml

我使用XAML在C#中动态创建了按钮。

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);

我现在如何更改按钮内容(文字)来自&#34;点击我&#34; to&#34;点击确定&#34;在这种情况下。

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

2 个答案:

答案 0 :(得分: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属性的状态。

答案 1 :(得分:0)

至于你是否应该使用绑定,这几乎可以肯定,它通过保持视图和模型分离使你的代码更容易维护,尽管你可能有充分的理由。

关于更改文本,您只需在事件处理程序中设置按钮的content属性即可。

默认情况下,触发事件的对象将作为您函数的“sender”参数传递,因此您只需要:

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

作为你的事件处理程序。