2012-02-20 14 views
0

作業ボタン内容を変更されていません。つまり、変更ボタンの内容は変更されませんが、プログラムは失敗したり例外をスローしたりしません。は、なぜ私はこのコードを持って

ボタン名を変更するために、同じボタン内でボタンの動作を変更(ちょっとした編集/保存)しようとしています。これはC#/ WPFを使ってできないのですか?

ありがとうございます。

EDIT:

XAML:

<Button Name="ModifyButton" Content="Modificar" Margin="5,10,0,0" Height="23" Width="120" HorizontalAlignment="Left" Click="ModifyButton_Click"></Button> 

WEIRD BEHAVIOR:メッセージボックスがボタンをdislay表示されている間、私は、その後、ボタンの内容の変更後MessageBox.Showの呼び出しを置く場合新しい(変更された)名前ですが、メッセージボックスを閉じた後、元のテキストが表示されます。

+3

あなたも、あなたのコードのXAMLの一部を追加する場合、それが役立つかもしれません。 –

+0

間違いなく可能です。小さなテストプロジェクトを使用してこれを複製できるかどうかを確認してください。イベントハンドラの本体にブレークポイントを置き、コードがそこに到達するかどうかを確認してください。 –

+0

@ Sensei76私はXAMLを入れました。 KshitijMehtaコードは "実行中"、つまり、デバッガはイベントを呼び出します。 –

答えて

1

あなたのUIのXAMLは、ボタンの値にバインドされていないと思います。データバインディングをチェックしましたか?

[EDIT]

はここにあなたの魔法情報は、あなたがShowDialog()を使用することです。すでに推測したように、これはUIスレッドに影響を与え、したがって表示動作に影響します。 ShowDialog()は、フォームをモーダルというダイアログとして表示し、UIスレッドをブロックし、そのため、スレッドの更新をブロックします。これはあらゆる種類の奇妙な動作を引き起こす可能性があります。

+0

それは拘束されています。デバッガを実行して実行しますが、UIは変更されません。 –

+0

私はテストプロジェクトであなたのサンプルを試しました。私のためにうまく動作します。ところで、申し訳ありませんが、データバインディングはまったくありません。 MVVMを使っていないというコメントを読みました。 WPFで作業している場合は、MVVMを使用してWPFの機能を利用することを強くお勧めします。 –

+0

ありがとう、この動作Sensei76を変更するにはどうしたらいいですか? –

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

私は同じものを持っています(他のコントロールなどもあります)。 1つの特定のことは、私は別のものからこのウィンドウをShowDialog()として表示していることです。 –

+0

私はダイアログを使用してもまだ動作します。上記の変更を参照してください。多分古い信頼できるステップのための時間です。他のすべてが失敗した場合は、マシンを再起動します。 –

関連する問題