在我的程序中,我有一個TreeViewItem
,它的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
從哪裏來?
感謝您的幫助。
你還記得我告訴過你[UI不是數據(HTTP://計算器。 com/a/14382137/643085),你不應該閱讀UI元素的屬性?如果你遵循了我的建議,而不是像所有這些可怕的winform一樣,你現在已經完成了你的申請(兩次)。 –
我相信你剛剛被斥責 – Jonesopolis
@HighCore我認爲你是一個說他心裏在想什麼的人,我很欣賞這一點。但是,對於我來說,你調用我的代碼並不重要。我明白你在說什麼,但是我已經取得了這樣的進步,我從來沒有試圖從最底層學習MVVM。我現在知道我的程序,而且我知道如何引用它裏面的元素,所以這就是我關心的。 –