WPF - 使用Visual Basic

时间:2016-02-17 21:37:56

标签: wpf vb.net

第一次使用来自WinForm的WPF并且调整得相当好但是我很难接受我常用的一个程序。这是我在WinForm中使用的代码来自动填充标记为这样的控件; label1,label2,label3等。

 Dim lbl As Label
    Dim matcheslbl() As Control

    For i As Integer = 1 To 24

        matcheslbl = Me.Controls.Find("label" & i, True)
        lbl = DirectCast(matcheslbl(0), Label)

        If matcheslbl.Length > 0 AndAlso TypeOf matcheslbl(0) Is Label Then

            lbl.Text = "Data Here"

        End If
    Next

如何在WPF中使用相同的过程?我在表单中的层次结构布局来自WrapPanel> StackPanel>画布>对照

根据我的知识修改代码后,我被挂在Me.Controls方面,在广泛搜索之后无法找到任何内容,或者我没有完全理解它。这是我修改过的代码......

       For i As Integer = 1 To 24
        Dim lbl As Label
        Dim matcheslbl() As Control

        matcheslbl = Me.WrapPanel.FindName("lbl" & i)
        lbl = DirectCast(matcheslbl(0), Label)

        If matcheslbl.Length > 0 AndAlso TypeOf matcheslbl(0) Is Label Then

            lbl.Content = "Data Here"

        End If
    Next

这就挂了......

matcheslbl = Me.WrapPanel.FindName("lbl" & i)

有关如何在WPF中完成我以前的过程的任何帮助,并详细说明如何实现它,因为我是WPF的新手

1 个答案:

答案 0 :(得分:1)

如果你看Me.WrapPanel.FindName上的intellisense,你会发现它不会返回一个数组,只返回一个对象。我使用以下

修复了您的代码
For i As Integer = 1 To 24
    Dim o As Object = wpMain.FindName("Label" + i.ToString())

    DirectCast(o, Label).Content = "Data Here"
Next