2013-08-23 2 views
0

내 프로그램에 이 있고 Header이 숫자 integer으로 설정되어 있습니다. Header을 스트레이트 int 값으로 변환하려면 getNumber이라는 함수로 전달합니다.문자열 값이 올바르게 전달되지 않습니다

getNumber 기능 :

이 기능은 this previously asked question에서 온다.

//Gets the number contained in a Node's header 
public static int getNumber(string parentNodeHeader) 
{ 
    int curNumber = 0; 
    Int32.TryParse(parentNodeHeader, out curNumber); 
    return curNumber; 
} 

나는이 함수 내 프로그램에서 몇 가지 다른 영역에서 같은 방식으로 통과,하지만 그들 중 하나에 string 제대로 전달하지 않습니다. 디버거에서 숫자 (parentNodeHeader)는 숫자 대신 값으로 "System.Windows.Controls.StackPanel"을 표시합니다. 왜 이런 일이 일어나는지 모르겠습니다.

함수에 대한 작업 호출과 작동하지 않는 호출에 대해 동일한 코드를 사용합니다.

int curNumber = getNumber(SelectedItem.Header.ToString()); 

왜 이런 일이 일어나는 것이며 어떻게 해결할 수 있습니까?

UPDATE : 나는이를 추가하여 getNumber 기능에 내 전화를 변경했습니다

...

var selectedHeader = (TextBlock)SelectedItem.Header; //The header is now a TextBlock 
int curNumber = getNumber(selectedHeader.Text); 

이론적으로이 작업을해야하지만, 내가 InvalidCastException을 얻고있다 그게 수 말한다 StackPanel ~ TextBlock에 캐스트하지 않았습니다. StackPanel의 출처는 ...?

도움 주셔서 감사합니다.

+2

당신은 기억하십니까 : 당신이 포함해야 Regex를 사용하기 위해

System.Text.RegularExpressions;는 그런 다음과 같이 그것을 구현에

. co.kr/a/14382137/643085) UI 요소의 속성을 읽지 않아야합니까? 이 끔찍한 winforms 같은 해킹 대신에 내 충고를 따랐다면 이미 2 번 응용 프로그램을 이미 마쳤습니다. –

+0

나는 너를 꾸짖 었다고 믿는다. – Jonesopolis

+2

@HighCore 나는 네가 생각하는 것을 말하는 사람이라고 생각한다. 그러나, 나에게 그것은 당신이 내 코드라고 부르는 것이 중요하지 않다. 나는 당신이 말하는 것을 이해하지만, MVVM을 배워야 할 것보다 훨씬 더 진전을 이루었습니다. 지금 내 프로그램을 알고 있으며, 그 안의 요소를 참조하는 방법을 알고 있으므로 그것이 내가 중요하게 생각하는 것입니다. –

답변

1

getNumber() 함수 대신에 Regex을 사용하여 string에서 integer을 추출했습니다. // 유래 : 나는 (HTTP [UI는 데이터되지 않습니다] 당신을 말했을 때 var data = Regex.Match(stringValue, @"\d+").Value;