Щелкните Меню, чтобы вызвать UserControl в сетку MainWindow. - PullRequest
0 голосов
/ 27 мая 2020

Я хочу щелкнуть меню «Сейчас играет», а затем вызвать 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>

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Вы добавляете элементы управления в Panel, например, Grid, используя свойство Panel.Children.

Ваш код можно упростить. Поскольку обработчик событий определен в коде программной части, у вас уже есть прямой доступ ко всем его полям и свойствам, просто используя 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
0 голосов
/ 28 мая 2020

Мой ответ:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...