<Page x:Class="SchoolSample.StudentPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:di="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="Student"
d:DesignHeight="480"
d:DesignWidth="640"
Style="{StaticResource PageStyle}"
mc:Ignorable="d">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<cmd:EventToCommand Command="{Binding PageLoadedCommand}" />
</i:EventTrigger>
<i:EventTrigger EventName="Unloaded">
<cmd:EventToCommand Command="{Binding PageUnLoadedCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<Grid x:Name="LayoutRoot">
<ScrollViewer x:Name="PageScrollViewer" Style="{StaticResource PageScrollViewerStyle}">
<StackPanel x:Name="ContentStackPanel" Style="{StaticResource ContentStackPanelStyle}">
<TextBlock Style="{StaticResource HeaderTextStyle}" Text="{Binding Path=Strings.StudentPageTitle, Source={StaticResource ApplicationResources}}" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border Grid.RowSpan="4"
Grid.ColumnSpan="2"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="5">
<Border.Effect>
<DropShadowEffect ShadowDepth="3" />
</Border.Effect>
</Border>
<StackPanel Grid.Row="0"
Grid.Column="0"
MaxWidth="400"
Margin="10,20">
<ListView x:Name="studentListView"
MaxHeight="200"
IsEnabled="{Binding StudentListIsEnabled}"
ItemContainerStyle="{DynamicResource ListViewItemContainerStyle}"
ItemsSource="{Binding Path=AllStudentsSource.View}"
ScrollViewer.VerticalScrollBarVisibility="Auto"
SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding PersonId}" Header="{Binding Path=Strings.StudentId, Source={StaticResource ApplicationResources}}" />
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="{Binding Path=Strings.Name, Source={StaticResource ApplicationResources}}" />
</GridView>
</ListView.View>
</ListView>
<Grid Width="Auto"
Height="Auto"
Margin="12"
HorizontalAlignment="Stretch"
VerticalAlignment="Top">
<Button Width="40"
Height="23"
Margin="6,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Command="{Binding Path=PrevPageCommand}"
Content="{Binding Path=Strings.ButtonPrev,
Source={StaticResource ApplicationResources}}" />
<Label Width="40"
Height="23"
Margin="48,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
HorizontalContentAlignment="Center"
Content="{Binding Path=CurrentPage,
Mode=OneWay}" />
<Button Width="40"
Height="23"
Margin="90,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Command="{Binding Path=NextPageCommand}"
Content="{Binding Path=Strings.ButtonNext,
Source={StaticResource ApplicationResources}}" />
<Button Width="40"
Height="23"
Margin="136,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Command="{Binding Path=FilterNameCommand}"
Content="{Binding Path=Strings.ButtonFilter,
Source={StaticResource ApplicationResources}}" />
<Button Width="40"
Height="23"
Margin="182,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Command="{Binding Path=FilterResetCommand}"
Content="{Binding Path=Strings.ButtonReset,
Source={StaticResource ApplicationResources}}" />
</Grid>
</StackPanel>
<Grid x:Name="studentGrid"
Grid.Row="0"
Grid.Column="1"
Width="Auto"
MaxWidth="400"
MaxHeight="340"
Margin="10,20">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition MinWidth="150" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<di:DisplayLabel x:Name="nameLabel"
Grid.Row="0"
Grid.Column="0"
Margin="0,0,10,10"
Target="{Binding ElementName=nameTextBox}" />
<DockPanel Grid.Row="0"
Grid.Column="1"
Margin="0,0,10,10"
LastChildFill="True">
<di:DescriptionViewer x:Name="nameDescriptionViewer"
DockPanel.Dock="Right"
Target="{Binding ElementName=nameTextBox}" />
<TextBox x:Name="nameTextBox"
Margin="0,0,5,0"
HorizontalAlignment="Stretch"
DockPanel.Dock="Left"
Text="{Binding Path=CurrentStudent.Name,
Mode=TwoWay,
NotifyOnValidationError=True,
ValidatesOnNotifyDataErrors=True,
ValidatesOnExceptions=True}" />
</DockPanel>
<di:DisplayLabel x:Name="enrollmentDateLabel"
Grid.Row="1"
Grid.Column="0"
Margin="0,0,10,10"
Target="{Binding ElementName=enrollmentDateDatePicker}" />
<DockPanel Grid.Row="1"
Grid.Column="1"
Margin="0,0,10,10"
LastChildFill="True">
<di:DescriptionViewer x:Name="enrollmentDateDescriptionViewer"
DockPanel.Dock="Right"
Target="{Binding ElementName=enrollmentDateDatePicker}" />
<DatePicker x:Name="enrollmentDateDatePicker"
Margin="0,0,5,0"
DockPanel.Dock="Left"
SelectedDate="{Binding Path=CurrentStudent.EnrollmentDate,
Mode=TwoWay,
NotifyOnValidationError=True,
ValidatesOnNotifyDataErrors=True,
ValidatesOnExceptions=True}" />
</DockPanel>
<di:DisplayLabel x:Name="statusLabel"
Grid.Row="2"
Grid.Column="0"
Margin="0,0,10,10"
Target="{Binding ElementName=statusComboBox}" />
<DockPanel Grid.Row="2"
Grid.Column="1"
Margin="0,0,10,10"
LastChildFill="True">
<di:DescriptionViewer x:Name="statusDescriptionViewer"
DockPanel.Dock="Right"
Target="{Binding ElementName=statusComboBox}" />
<ComboBox x:Name="statusComboBox"
Margin="0,0,5,0"
HorizontalAlignment="Stretch"
DockPanel.Dock="Left"
ItemsSource="{Binding StudentStatusCollection}"
DisplayMemberPath="DisplayName"
SelectedValuePath="Value"
SelectedValue="{Binding CurrentStudent.Status,
Mode=TwoWay,
NotifyOnValidationError=True,
ValidatesOnNotifyDataErrors=True,
ValidatesOnExceptions=True}" />
</DockPanel>
</Grid>
<Grid Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="2"
Width="Auto"
Height="Auto"
Margin="12"
HorizontalAlignment="Stretch"
VerticalAlignment="Top">
<Button Width="75"
Height="23"
Margin="0,10,248,5"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding Path=AddStudentCommand}"
Content="{Binding Path=Strings.ButtonAdd,
Source={StaticResource ApplicationResources}}" />
<Button Width="75"
Height="23"
Margin="0,10,167,5"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding Path=DeleteStudentCommand}"
Content="{Binding Path=Strings.ButtonDelete,
Source={StaticResource ApplicationResources}}" />
<Button x:Name="editCommitStudentButton"
Width="75"
Height="23"
Margin="0,10,86,5"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding Path=EditCommitStudentCommand}"
Content="{Binding Path=Strings.ButtonOK,
Source={StaticResource ApplicationResources}}" />
<Button Width="75"
Height="23"
Margin="0,10,5,5"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding Path=CancelEditStudentCommand}"
Content="{Binding Path=Strings.ButtonCancel,
Source={StaticResource ApplicationResources}}" />
</Grid>
<di:ValidationSummary x:Name="studentValidationSummary"
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="10,0,10,20"
Target="{Binding ElementName=studentGrid}" />
<StackPanel Grid.Row="3"
Grid.Column="0"
Orientation="Vertical">
<TextBlock Margin="10,0"
VerticalAlignment="Center"
FontSize="14"
FontWeight="Bold"
Text="{Binding Path=Strings.CoursesEnrolledPageTitle,
Source={StaticResource ApplicationResources}}" />
<ListView x:Name="coursesListView"
MaxWidth="400"
MaxHeight="200"
Margin="10,10,10,20"
ItemContainerStyle="{DynamicResource ListViewItemContainerStyle}"
ItemsSource="{Binding Path=CurrentStudent.Enrollments}"
ScrollViewer.VerticalScrollBarVisibility="Auto">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding CourseId}" Header="{Binding Path=Strings.CourseId, Source={StaticResource ApplicationResources}}" />
<GridViewColumn DisplayMemberBinding="{Binding Course.Title}" Header="{Binding Path=Strings.CourseName, Source={StaticResource ApplicationResources}}" />
</GridView>
</ListView.View>
</ListView>
</StackPanel>
</Grid>
<Grid Width="Auto"
Height="Auto"
Margin="12,12,12,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Top">
<Button Width="75"
Height="23"
Margin="0,5,410,5"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding Path=RefreshStudentCommand}"
Content="{Binding Path=Strings.ButtonRefresh,
Source={StaticResource ApplicationResources}}" />
<Button Width="75"
Height="23"
Margin="0,5,329,5"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding Path=SubmitStudentChangeCommand}"
Content="{Binding Path=Strings.ButtonSave,
Source={StaticResource ApplicationResources}}" />
<Button Width="75"
Height="23"
Margin="0,5,248,5"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding Path=CancelStudentChangeCommand}"
Content="{Binding Path=Strings.ButtonCancel,
Source={StaticResource ApplicationResources}}" />
<Button Width="75"
Height="23"
Margin="0,5,167,5"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding Path=RefreshAllCommand}"
Content="{Binding Path=Strings.ButtonRefreshAll,
Source={StaticResource ApplicationResources}}" />
<Button Width="75"
Height="23"
Margin="0,5,86,5"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding Path=SubmitAllChangeCommand}"
Content="{Binding Path=Strings.ButtonSaveAll,
Source={StaticResource ApplicationResources}}" />
<Button Width="75"
Height="23"
Margin="0,5,5,5"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding Path=CancelAllChangeCommand}"
Content="{Binding Path=Strings.ButtonCancelAll,
Source={StaticResource ApplicationResources}}" />
</Grid>
</StackPanel>
</ScrollViewer>
</Grid>
</Page>