单击"菜单"将用户控件调用到主窗口的网格



我想点击菜单"正在播放",然后将UserControl调用到MainWindow的网格

MainWindow.xaml:

<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Menu Height="30" VerticalAlignment="Top">
<MenuItem Height="30" Header="Now Playing" x:Name="NowPlaying" Click="NowPlaying_Click" />
<MenuItem Height="30" Header="Music Library" Click="MenuItem_Click" />
<MenuItem Height="30" Header="Play Schedule" />
<MenuItem Height="30" Header="Control" />
<MenuItem Height="30" Header="Option" />
</Menu>
<Grid Margin="0,30,0,0" x:Name="MainBoard">
(UserControl"NowPlaying")
</Grid>
</Grid>

MainWindow.xaml.vb

Private Sub NowPlaying_Click(sender As Object, e As RoutedEventArgs) Handles NowPlaying.Click  
Dim MainWindow = TryCast(System.Windows.Window.GetWindow(Me), MainWindow)
Dim MainWindowBoard = MainWindow.MainBoard
Dim NowPlayingBoard As UserControl = New NowPlaying
#???
End Sub

UserControl.xaml:

<Grid>
<Grid Width="800" Margin="0,0,0,100"/>
<Grid Margin="0,350,0,0" Background="#FFFFDADA">
<Slider Margin="10,10,10,0" VerticalAlignment="Top" Height="30"/>
</Grid>
</Grid>

您可以向Panel添加控件,例如 使用Panel.Children属性Grid

您的代码可以简化。由于事件处理程序是在代码隐藏中定义的,因此您只需使用Me即可直接访问其所有字段和属性。调用Window.GetWindow是多余的。

Private Sub NowPlaying_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim nowPlayingControl As UserControl = New NowPlaying()
Me.MainBoard.Children.Add(nowPlayingControl)
End Sub

我的回答:

Private Sub NowPlaying_Click(sender As Object, e As RoutedEventArgs) Handles NowPlaying.Click
Dim NowPlayingBoard As UserControl = New NowPlaying
Me.MainBoard.Children.Clear()
Me.MainBoard.Children.Add(NowPlayingBoard)
End Sub

最新更新