2012-01-02 6 views
0

バーコードを読み取り、それをバーコードというテキストボックスに入れる別の方法で読み取るバーコードを入れました。そして今MessageboxははstrBarCodeが正しい値を持っていると言うが、それはプログラムに表示されないと sの値がnull であることをカミングアウトされたバーコードにcorespondingデータをロードするボタンを作成したが、問題FirstOrDefaultは引数を取っていません

private void Load_Click(object sender, RoutedEventArgs e) 
{ 
    var str = @"<Books xmlns=""""> <book Barcode=""780672318863""><Serial>11</Serial> 
          <name>abc</name> <detail>Fantasy</detail></book> 
          <book Barcode=""780672318864""><Serial>12</Serial> 
          <name>abc</name><detail>Fantasy1</detail></book></Books>"; 
    var strBarcode = barcode.Text; 
    MessageBox.Show(strBarCode); 
    XDocument docX = XDocument.Parse(str); 
    var s = docX.Descendants("book").FirstOrDefault(a => a.Attribute("Barcode").Value == strBarcode); 
    spnl.DataContext = s; 
} 

が直面しています私は直接 "780672318863" strBarcodeの代わりにそれを置く場合は、他の手を正しく値を表示しています
誰かが私は間違っていると私に伝えることができますか?

+2

あなたのXMLには「lense」という要素が含まれていないので、このコードは現時点では機能しません。それは問題を示す短くて完全な*例(理想的にはコンソールアプリケーションとして)を投稿できれば本当に役に立ちます。 –

+0

@JonSkeet - しかし、それは ''を持っています。 OPはドメインの詳細の不完全な難読化を行った。 –

+0

@HenkHolterman:はい、でも、他に何が変わったのかは分かりません。または、おそらくコードでは間違っていた可能性があり、バーコードをハードコードしたときに他の変更を加えたのかもしれません。確かに言うことは不可能ですが、書かれたコードは決して 'lense'要素を見つけることはできません。これは、問題を示す短くて完全なプログラムが非常に重要な場所です。 –

答えて

1

再生できません。

コードをdocX.Descendants("book")...で実行したところ、正しい要素が生成されました。

あなたは

string strBarcode = barcode.Text.Trim(); 

を試みることができるが、残りのためにあなただけのデバッガで見て回る必要があります。

+0

トリムはトリックをしました – murmansk

+0

私はWPFの新機能ですが、トリムは何を教えてくれますか – murmansk

+0

トリム()はWPFとは関係ありません。先頭と末尾の空白(空白)を削除する単純な文字列メソッドです。 –

関連する問題