为什么不是';t更改按钮内容工作
本文关键字:按钮 工作 为什么不 | 更新日期: 2023-09-27 18:25:10
我有这个代码:
private void ModifyButton_Click(object sender, RoutedEventArgs e)
{
ModifyButton.Content = "Another button name";
}
但它不起作用。我的意思是,修改按钮的内容不会改变,但程序不会失败或引发任何异常。
我试图修改按钮名称,以改变它在同一按钮内的行为(有点编辑/保存)。这在使用C#/WPF时是不可能的吗?
提前谢谢。
编辑:
XAML:
<Button Name="ModifyButton" Content="Modificar" Margin="5,10,0,0" Height="23" Width="120" HorizontalAlignment="Left" Click="ModifyButton_Click"></Button>
奇怪的行为:如果我在更改按钮内容后放了一个MessageBox.Show调用,那么,当显示消息框时,按钮会显示新的(更改的)名称,但在关闭消息框后,它会显示它的原始文本。
我猜UI的XAML没有绑定到按钮的值。你检查数据绑定了吗?
[EDIT]
您的魔法信息是您使用ShowDialog()
。正如您已经猜到的,这会影响UI线程,从而影响显示行为。ShowDialog()
将表单显示为模式对话框,并阻止UI线程,从而阻止其刷新。这可能会导致各种奇怪的行为。
这就是我所拥有的,它可以工作:
窗口1
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Button Name="ModifyButton" Content="Open Dialog" Margin="80,104,78,0" Height="23" Click="ModifyButton_Click" VerticalAlignment="Top"></Button>
</Grid>
</Window>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void ModifyButton_Click(object sender, RoutedEventArgs e)
{
Window2 win2 = new Window2();
win2.ShowDialog();
}
}
窗口2
<Window x:Class="WpfApplication1.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window2" Height="300" Width="300">
<Grid>
<Button Name="ModifyButton" Content="Modificar" Margin="80,104,78,0" Height="23" Click="ModifyButton_Click" VerticalAlignment="Top"></Button>
</Grid>
</Window>
public partial class Window2 : Window
{
public Window2()
{
InitializeComponent();
}
private void ModifyButton_Click(object sender, RoutedEventArgs e)
{
ModifyButton.Content = "Another button name";
}
}