在我的程序中,我有一个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。我现在知道我的程序,而且我知道如何引用它里面的元素,所以这就是我关心的。 –