Измените содержимое окна с помощью пункта меню нажмите кнопку 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