为什么更改按钮内容不起作用

时间:2012-02-20 20:10:32

标签: c# wpf

我有这段代码:

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>

WEIRD BEHAVIOR:如果我在更改按钮内容后放入MessageBox.Show调用,则在显示消息框时按钮会显示新的(已更改)名称,但在消息框关闭后,则显示它的原始文本。

2 个答案:

答案 0 :(得分:1)

我猜你的UI的XAML没有绑定到你的按钮的值。你检查过DataBinding了吗?

<强> [编辑]

您的 魔法 信息是您使用ShowDialog()。正如您已经猜到的,这会影响您的UI线程,从而影响显示行为。 ShowDialog()将表单显示为模式对话框,并阻止您的UI线程,从而阻止刷新它。这可能会导致各种奇怪的行为。

答案 1 :(得分:0)

这就是我所拥有的并且有效:

窗口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();
    }
}

Window 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";
    }
}