2012-01-02 4 views
0

Я поместил штрих-код чтения в отдельный метод, который считывает штрих-код и помещает его в текстовое поле с именем barcode. и создал кнопку, которая будет загружать данные 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; 
} 

Теперь Messagebox говорит strBarCode имеет правильное значение, но оно не отображается в программе и сек значение выходит утратившими на другой рукой, если я ставлю прямо «780672318863» вместо strBarcode, он правильно показывает значение.
может ли кто-нибудь сказать мне, где я иду не так?

+2

Ваш XML не содержит * любых * элементов, называемых «линзой», поэтому этот код не будет работать в данный момент. Это действительно поможет, если вы можете опубликовать короткий, но * полный * пример (в идеале, как консольное приложение), который демонстрирует проблему. –

+0

@JonSkeet - Но у него есть ''. ОП совершил неполную обфускацию данных о домене. –

+0

@HenkHolterman: Да, но бог знает, что еще изменилось в одно и то же время. Или, может быть, это не было запутыванием - возможно, это было неправильно в его коде, и он сделал некоторые другие изменения, когда он закодировал штрих-код. Невозможно точно сказать, но мы * можем * знать, что написанный код никогда не найдет элемент «lense». Здесь важна короткая, но полная программа, демонстрирующая проблему. –

ответ

1

Не воспроизводимый.

Я провел ваш код с docX.Descendants("book")... и создал правильный элемент.

Вы можете попробовать

string strBarcode = barcode.Text.Trim(); 

но для остальных вы будете просто смотреть вокруг в отладчике.

+0

thank u Trim сделал трюк – murmansk

+0

Я новичок в WPF, но не могли бы вы рассказать мне, что делает Trim do – murmansk

+0

Trim() не имеет ничего общего с WPF. Это простой строковый метод, который удаляет начальные и конечные пробелы (пробелы). –

Смежные вопросы