我有这段代码:
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调用,则在显示消息框时按钮会显示新的(已更改)名称,但在消息框关闭后,则显示它的原始文本。
答案 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";
}
}