1

データベースから情報を取り込む wpf アプリケーションがあります。アプリケーションを最初にデフォルト ウィンドウにロードしたとき、データを入力する必要がある TextBox がありますが、テキスト ボックスに値が入力されません。テキストボックスのテキスト プロパティをデータに追加します。次のようなtryとcatchブロック内にLINQ to SQLコードがあります。

try
{
   MY LINQ TO SQL CODE HERE:
}
catch
{

}

文字通り、このようにしなければなりません。これを行わずに SQL コードを入力すると、タイムアウト エラーが発生します。これを行う必要があるため、私のSQLコードはページが読み込まれる前ではなく、読み込まれた後に実行されます。ウィンドウがロードされる前にコードを実行するにはどうすればよいですか?そのようにして、テキストボックスの値を設定できますか? ありがとう。

4

2 に答える 2

1

これには、非同期バインディングの使用を検討してください。次のように、XAML 構文にも組み込まれています。

<TextBox Text="{Binding Path=MyBinding,IsAsync=True,FallbackValue=Loading...}" />

ここで、MyBindingプロパティが SQL を実行するとします。

string _myBinding = null;
public string MyBinding {
    get {
        if (_myBinding == null)
        {
            // get value from SQL operation
        }
        return _myBinding;
    }
}

これで、TextBox にフォールバック値 ("読み込み中...") が表示され、UI はブロックされませんが、SQL 操作が完了すると読み込まれます。

SQL 操作の実行中に UI をブロックするよりも、おそらくこのアプローチを採用することをお勧めします (ユーザーは、アプリがフリーズしている、不満を感じているなどと考える可能性があります)。

于 2012-05-21T00:43:16.810 に答える
0

ウィンドウをインスタンス化するときに呼び出されるコンストラクターにクエリ コードを配置します。

public class myWindow : Window
{
    public myWindow()
    {
         //code here
         InitializeComponent();
    }
}

クエリの実行中に読み込み画面などを表示し、クエリが失敗した場合は失敗画面/メッセージを表示することをお勧めします。

于 2012-05-21T00:31:24.400 に答える