2012-01-02 6 views
0

바코드를 읽고 바코드라는 텍스트 상자에 넣는 별도의 방법으로 읽는 바코드를 넣었습니다. 데이터가 문제를 그 바코드에 풀어서하지만 직면로드 버튼을 생성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; 
} 

이제 메시지 박스가 strBarCode가 올바른 값을 가지고 말한다하지만이 프로그램에 표시되지 않으며 의 값이 null로 나오고 에 다른 손으로 직접 넣으면 "780672318863"strBarcode 자리에 올바르게 값을 표시하고있다
아무도 내가 잘못 가고있다 말해 줄 수 있습니까?

+2

XML에는 "lense"라는 요소가 포함되어 있지 않으므로이 코드가 현재 작동하지 않을 수 있습니다. 문제를 증명하는 짧지 만 완성 된 * 예제 (이상적으로는 콘솔 앱)를 게시 할 수 있다면 정말 도움이 될 것입니다. –

+0

@JonSkeet - 그러나 그것은 '를 가지고 있습니다. OP는 도메인 세부 정보의 불완전한 난독 화를 수행했습니다. –

+0

@HenkHolterman : 예,하지만 선량은 동시에 변경된 사항을 알고 있습니다. 또는 아마도 코드가 난해하지 않은 것일 수도 있습니다. 실제로 코드에서 잘못되었거나 바코드를 하드 코딩했을 때 다른 변경 작업을 한 것일 수도 있습니다. 확실하게 말할 수는 없지만 - 작성된 코드는 절대로 lense 요소를 찾지 못한다는 것을 알 수 있습니다. 이것은 문제를 보여주는 짧지 만 완전한 프로그램이 중요한 이유입니다. –

답변

1

재생할 수 없습니다.

코드를 docX.Descendants("book")...으로 실행했으며 올바른 요소를 생성합니다.

당신은

string strBarcode = barcode.Text.Trim(); 

을 시도 할 수 있지만 나머지 당신은 디버거에서 주위를 둘러해야합니다.

+0

Trim 님이 트릭을 작성해 주셨습니다 – murmansk

+0

저는 WPF에 익숙하지 않았지만 Trim이 무엇을하는지 말해 줄 수 있습니까 – murmansk

+0

Trim()은 WPF와 아무런 관련이 없습니다. 선행 및 후행 공백 (공백)을 제거하는 간단한 문자열 메서드입니다. –

관련 문제