ここではあまり働くことはありませんが、私はあなたの質問に答えることができると思います。私が見ているように、これを行う簡単な方法がいくつかあります。
まず、ボタンのテキストを変更するプロセスの最後に、ボタンのテキストをもう一度[確認]に変更するだけで済みます。例:
OnClick()
{
Button.Text = "Verifying...";
DoSomething();
}
DoSomething()
{
...
Button.Text = "Verify";
}
この方法の問題は、すばやく汚れていることです。あなたがビュー(ユーザーインターフェイス)をコードで直接変更していることを前提としています。また、DoSomethingメソッドもビューを操作できると想定しています。ベストプラクティスではありませんが、シンプルです。
もう1つの方法は、処理が完了したときにイベントを発生させることです。あなたのフォーム(またはViewModel)はイベントが発生するのを待ち受け、ボタンのテキスト値を "Verify"に戻すことができます。特にMVVMのようなものを使用していて、ViewModelでこの作業を行う場合は、これはもう少しベストプラクティスです。 ViewModelからボタンのテキストを取得することができるので、最初に、最後に変更することができます。
編集 あなたが投稿した最新情報から、画面の再表示に問題があるようです。これは、プロセス全体が完了するまで更新をロックしている同期プロセスを実行している可能性が高いためです。これを回避する一つの方法は、(ハック)ここに記載されている指示に従うことになります:
http://geekswithblogs.net/NewThingsILearned/archive/2008/08/25/refresh--update-wpf-controls.aspx
私はむしろあなたはしかし、より多くのスレッドに優しいように、このコードをリファクタリング見るであろう。プロセスが待機中のインジケータ(「検証中...」など)を表示するのに十分な時間がかかる場合、実際の作業を処理するためにバックグラウンドワーカーまたは他の種類の非同期プロセスを使用することをお勧めしますUIはロックされません。しかし、それは初心者として学びたいことの範囲を超えているかもしれないより高度なトピックです。もしそうなら、私は上記のハックを今のところやっているか、単に問題を抱えて生きていることを提案します。
は、あなたがすべてで何を試してみましたので、あなたは、あなたが立ち往生している場所へとコードを提供することができますか? –
プライベートvoid btnVerify_Click(オブジェクト送信者、RoutedEventArgs e) { btnVerify.Content = new BitmapImage(新しいUri( "Verifying.png"、UriKind.Relative)); VerifyData(); \t \t //これはほんの数秒から数分かかります \t btnVerify.Content = new BitmapImage(新しいUri( "Verified.png"、UriKind.Relative)); \t} – user1222006
@ user1222006 - 次回に自分の質問にコードを投稿し、読みやすく理解しやすいようにコードマークアップ(各行の先頭に4つのスペース)を使用してください。ありがとう。 – IAmTimCorey