我有UWP(VB.NET)应用程序,它的按钮是动态创建的。在创建按钮时,我还为它们动态创建了单击事件。点击事件是使用frame.navigate(GetType(<typename>))
导航到不同的页面。但是,出现错误:未定义类型'T'。
'T'是我在代码中声明的类型。请在下面查看我的代码。非常感谢您的帮助。
Public ButtonPipingSample As Button 'used for sizing and margins
Public ButtonsPiping As New ArrayList
Private Sub PipingToolsButtonsLoad()
Dim XmlToolsDoc As XDocument = XDocument.Load("Tools.xml")
Dim query = From t In XmlToolsDoc.Descendants("TOOL")
Where t.Element("CATEGORY").Value.ToUpper = "PIPING"
Select t
Dim PipingButtons(query.Count - 1, 10) As String
Dim NumberOfPipingButtons = query.Count - 1
For i = 0 To NumberOfPipingButtons
'ID, NAME, CATEGORY, margin, horizontalcontentalignment, background, borderbrush, width, height, fontsize
PipingButtons(i, 0) = query.ElementAt(i).Element("ID").Value 'ID
PipingButtons(i, 1) = query.ElementAt(i).Element("NAME").Value 'NAME
PipingButtons(i, 2) = query.ElementAt(i).Element("CATEGORY").Value 'CATEGORY
PipingButtons(i, 3) = "0,0,30,0" 'Margin
PipingButtons(i, 4) = "Center" 'HorizontalContentAlignment
PipingButtons(i, 5) = "#33109772" 'Background
PipingButtons(i, 6) = "Green" 'BorderBrush
PipingButtons(i, 7) = "170" 'Width
PipingButtons(i, 8) = "80" 'Height
PipingButtons(i, 9) = "13" 'FontSize
PipingButtons(i, 10) = query.ElementAt(i).Element("HINT").Value
Next
'Clear Buttons Array
ButtonsPiping.Clear()
'Create buttons
For i = 0 To NumberOfPipingButtons
Dim ButtonPiping As New Button
Dim TextBlockButtonPiping As New TextBlock
TextBlockButtonPiping.Text = PipingButtons(i, 1)
TextBlockButtonPiping.HorizontalAlignment = True
TextBlockButtonPiping.TextWrapping = True
TextBlockButtonPiping.TextAlignment = TextAlignment.Center
ButtonPiping.Content = TextBlockButtonPiping
ButtonPiping.Margin = New Thickness(15, 0, 30, 15)
ButtonPiping.Background = New SolidColorBrush(Windows.UI.Colors.DeepPink)
ButtonPiping.BorderBrush = New SolidColorBrush(Windows.UI.Colors.Blue)
ButtonPiping.Width = PipingButtons(i, 7)
ButtonPiping.Height = PipingButtons(i, 8)
ButtonPiping.FontSize = PipingButtons(i, 9)
ButtonPiping.Name = PipingButtons(i, 0)
AddHandler ButtonPiping.Click, AddressOf ButtonPipingToolClick
ButtonPipingSample = ButtonPiping
ButtonsPiping.Add(ButtonPiping)
Next
End Sub
Private Sub ButtonPipingToolClick(sender As Object, e As RoutedEventArgs)
Dim T As Type = Type.GetType(sender.name)
Frame.Navigate(GetType(T))
End Sub
答案 0 :(得分:1)
看看代码中的逻辑,我认为ButtonPipingToolClick
应该包含
Dim T As Type = Type.GetType(sender.name)
Dim X As Type = T ' You aleady know that T is of Type Type
Frame.Navigate(X) ' or T
答案 1 :(得分:0)
我是那样做的。
Private Sub ButtonPipingToolClick(sender As Object, e As RoutedEventArgs)
Dim ans As String = "Mechanical Engineering Tools, Version=1.0.0.0"
Dim an As New System.Reflection.AssemblyName(ans)
Dim a As Assembly = Assembly.Load(an)
'TxtBlockTypeTest.Text = a.GetTypes().ToString
For Each T As Type In a.GetTypes()
Dim ButtonName As String = "_" & sender.name.ToString
If ButtonName = T.Name.ToString Then
Frame.Navigate(T)
End If
Next
End Sub