2012-02-20 58 views
0

我有這樣的代碼:爲什麼不改變按鈕的內容合作

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呼叫按鈕的內容變化後,那麼,在顯示消息框按鈕dislay的新(更改)的名稱,但在消息框關閉後,它會顯示它的原始文本。

+3

如果您添加代碼的XAML的一部分,也可能有幫助。 – 2012-02-20 20:18:04

+0

這絕對有可能。嘗試查看是否可以使用小型測試項目複製此內容。在你的事件處理程序的主體中放置一個斷點,看看你的代碼是否到達那裏。 – 2012-02-20 20:19:34

+0

@ Sensei76我只是把XAML。 KshitijMehta代碼是「正在執行」,我的意思是調試器調用事件。 – 2012-02-20 20:21:42

回答

1

我猜你的UI的XAML沒有綁定到你的按鈕的值。你檢查過DataBinding嗎?

[編輯]

這裏你魔術信息是您使用ShowDialog()。正如你已經猜到的,這會影響你的UI線程,從而影響顯示行爲。 ShowDialog()將窗體顯​​示爲模式對話框並阻止您的UI線程,因此會阻止其刷新。這可能會導致各種奇怪的行爲。

+0

它是受約束的。我運行調試器並執行,但UI不會更改。 – 2012-02-20 20:17:03

+0

我剛剛在一個測試項目中嘗試過你的例子。對我來說工作得很好。順便說一句,對不起,根本沒有數據綁定。我剛剛在其他評論中讀到過你不使用MVVM嗎?如果你正在使用WPF,我強烈建議你使用MVVM來利用WPF的功能。 – 2012-02-20 20:35:28

+0

謝謝,你知道我該如何修改這個行爲Sensei76或者它不可能? – 2012-02-20 20:50:16

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

窗口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"; 
    } 
} 
+0

我也有同樣的(與其他控件等)。一件特別的事情是,我將這個窗口顯示爲另一個ShowDialog()。 – 2012-02-20 20:36:14

+0

如果我使用對話框,仍然適用於我。查看上面的更改。也許是時間過去了,值得信賴的一步。如果一切都失敗,請重新啓動機器。 – 2012-02-20 20:40:23

相關問題