为什么不是';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调用,那么,当显示消息框时,按钮会显示新的(更改的)名称,但在关闭消息框后,它会显示它的原始文本。

为什么不是';t更改按钮内容工作

我猜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";
    }
}