从动态创建的按钮更改内容 属性
Change content property from dynamically created button
我使用 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);
我现在如何在这个事件中将按钮内容(文本)从 "tap me" 更改为 "tapped ok"。
void dugme_Tapped(object sender, TappedRoutedEventArgs e)
{
//should I use binding?
}
正如您在创建按钮时将 Content
属性 设置为 "tap me"
一样,您也可以在事件处理程序中设置它:
void dugme_Tapped(object sender, TappedRoutedEventArgs e)
{
((Button)sender).Content = "tapped ok";
}
就是说,您在代码注释 "should I use binding?" 中提问,由于这是 WPF,默认答案是 "yes"。但是 如何 鉴于缺乏上下文,这里很难说你究竟会怎么做。目前尚不清楚您为什么要以编程方式添加 Button
实例(这样做本身在 WPF 中是非惯用的)。
如果您觉得自己有充分的理由避免基于 XAML 的初始化和绑定来创建 Button
实例,那么您不妨继续使用这种方法来设置Content
属性。在这种情况下,上面的示例应该适合您。
如果您想要更以 XAML 为中心的方法,您可能应该问一个不同的问题,首先要清楚地解释您的场景并询问如何以更类似于 WPF 的方式初始化按钮,如以及如何保持该按钮的 Content
属性 的状态。
至于你是否应该使用绑定,这是 XAML,几乎可以肯定的是,通过将视图和模型分开,它使你的代码更容易维护,尽管你可能有充分的理由。
至于更改文本,您只需在事件处理程序中设置按钮的内容属性即可。
默认情况下,触发事件的对象作为函数的 'sender' 参数传递,因此您只需要:
void dugme_Tapped(object sender, TappedRoutedEventArgs e)
{
(sender as Button).Content = "tapped ok";
}
作为您的事件处理程序。
我使用 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);
我现在如何在这个事件中将按钮内容(文本)从 "tap me" 更改为 "tapped ok"。
void dugme_Tapped(object sender, TappedRoutedEventArgs e)
{
//should I use binding?
}
正如您在创建按钮时将 Content
属性 设置为 "tap me"
一样,您也可以在事件处理程序中设置它:
void dugme_Tapped(object sender, TappedRoutedEventArgs e)
{
((Button)sender).Content = "tapped ok";
}
就是说,您在代码注释 "should I use binding?" 中提问,由于这是 WPF,默认答案是 "yes"。但是 如何 鉴于缺乏上下文,这里很难说你究竟会怎么做。目前尚不清楚您为什么要以编程方式添加 Button
实例(这样做本身在 WPF 中是非惯用的)。
如果您觉得自己有充分的理由避免基于 XAML 的初始化和绑定来创建 Button
实例,那么您不妨继续使用这种方法来设置Content
属性。在这种情况下,上面的示例应该适合您。
如果您想要更以 XAML 为中心的方法,您可能应该问一个不同的问题,首先要清楚地解释您的场景并询问如何以更类似于 WPF 的方式初始化按钮,如以及如何保持该按钮的 Content
属性 的状态。
至于你是否应该使用绑定,这是 XAML,几乎可以肯定的是,通过将视图和模型分开,它使你的代码更容易维护,尽管你可能有充分的理由。
至于更改文本,您只需在事件处理程序中设置按钮的内容属性即可。
默认情况下,触发事件的对象作为函数的 'sender' 参数传递,因此您只需要:
void dugme_Tapped(object sender, TappedRoutedEventArgs e)
{
(sender as Button).Content = "tapped ok";
}
作为您的事件处理程序。