Kasthuri Gunabalasingam Ответов: 0

Измените содержимое окна с помощью пункта меню нажмите кнопку WPF


Я должен сделать приложение WPF, которое должно содержать строку меню. Когда пользователь нажимает каждый пункт меню, Окно должно быть загружено с различным содержимым. пожалуйста, кто-нибудь предложите какие-нибудь идеи для достижения этой цели.

Что я уже пробовал:

<Window  x:Class="win3.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        

        Title="MainWindow" Height="700" Width="600" >
    <Grid>

        <DockPanel>
            <Menu DockPanel.Dock="Top">
                <MenuItem Header="Student" Click="StudentMenuItem_Click"/>
                <MenuItem Header="Academic" Click="AcademicMenuItem_Click"/>
            </Menu>
            <TextBox AcceptsReturn="True" />
        </DockPanel>
        <Grid x:Name="grdStudent"  Height="500" Width="550" Margin="22,56,22,115">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="2*"/>
                <ColumnDefinition Width="3*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="6*"/>
                <RowDefinition Height="1*"/>
            </Grid.RowDefinitions>
            <Label Content="Student Id" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="57,51,0,0"/>
            <Label Content="Student Name: " HorizontalAlignment="Left" Margin="57,110,0,0" VerticalAlignment="Top" Width="84"/>
            <TextBox Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="46,51,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="175"/>
            <TextBox Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="46,110,0,0" TextWrapping="Wrap"  VerticalAlignment="Top" Width="175"/>
        </Grid>

        <Grid x:Name="grdAcademic" Height="500" Width="550" Margin="22,56,22,115" >
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="2*"/>
                <ColumnDefinition Width="3*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="1*"/>
                <RowDefinition Height="5*"/>
            </Grid.RowDefinitions>
            <ComboBox x:Name="cmbFloor" HorizontalAlignment="Left" VerticalAlignment="Top" Width="80" SelectionChanged="cmbFloor_SelectionChanged" Margin="130,29,0,0"/>
            <ComboBox x:Name="cmbDoor" HorizontalAlignment="Left" Margin="130,10,0,0" VerticalAlignment="Top" Width="80" SelectionChanged="cmbDoor_SelectionChanged" Grid.Row="1"/>
        </Grid>
    </Grid>
</Window >



.цезий

private void StudentMenuItem_Click(object sender, RoutedEventArgs e)
       {
           this.grdStudent.Visibility = Visibility.Visible;
           this.grdAcademic.Visibility = Visibility.Collapsed;
       }

     private void AcademicMenuItem_Click(object sender, RoutedEventArgs e)
       {

           this.grdAcademic.Visibility = Visibility.Collapsed;
           this.grdStudent.Visibility = Visibility.Collapsed;
       }


Приведенный выше код работает в соответствии с ожиданиями.Файл XMAL выглядит неуклюжим.(Позже нам нужно будет добавить еще контроллеры)

Alexander Dymshyts

Вы можете создать два userControls - один для пользователя и один для академического и загрузить их на click event в ваш основной вид

johannesnestler

попробуйте шаблон MVVM...

Jitesh Hirani

Пожалуйста, смотрите следующую ссылку
http://stackoverflow.com/questions/14098810/wpf-add-a-command-to-auto-generated-by-binding-menu-items

0 Ответов