2011-10-20 22 views
0

私はテキストボックスを持っています。内容が変更されたときに、テキストボックスのテキストと一致する要素をxmlファイルに照会し、その結果をリストボックスに表示したいとします。WPF XAML LINQ:XMLファイルを一度だけ読み込む方法は?

私の現在のコードは次のとおりです。

private void textBox1_TextChanged(object sender, TextChangedEventArgs e) 
    { 
     var xElem = XElement.Load("ProductTable.xml"); 
     ... 

どのように私はその負荷が一度だけ呼び出されるコードすべきか?つまり、キーストロークが入力されるたびに、xmlファイルが(再)ロードされます。ありがとう。

+1

あなたは遅延ロード(またはしない)、インスタンス変数を作成することができます。何がもっと必要ですか? – jv42

+0

あなたが入力するときに提案をするWPFツールキットの 'Autocomplete'テキストボックスを使わないのはなぜですか?それはまた、XMLデータソース(その問題の任意のデータソース)を使用することができます.... http://diptimayapatra.wordpress.com/2010/03/05/auto-complete-box-in-wpf-toolkit/ –

答えて

4

xElemをクラスのフィールドに移動します。その後nullためTextChangedハンドラのチェックに:

class MyControl : UserControl 
{ 
    XDocument productTableDocument; 

    private void textBox1_TextChanged(object sender, TextChangedEventArgs e) 
    { 
     if (productTableDocument == null) 
     { 
     productTableDocument = XDocument.Load("ProductTable.xml"); 
     } 
     // continue working with not null productTableDocument 
    } 
} 
+0

もちろん、 XMLが古くなった場合、非同期にロードする必要がある場合、正確な時点でメモリを再利用する必要がある場合など、複雑さを増やすことができます。 – jv42

+0

これは簡単な処理です。 – jv42

関連する問題