<Page x:Class="SchoolSample.CoursePage"
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:extToolkit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit.Extended"
xmlns:local="clr-namespace:SchoolSample"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="Course"
d:DesignHeight="760"
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.CoursePageTitle, Source={StaticResource ApplicationResources}}" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border Grid.RowSpan="3"
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="courseListView"
MaxHeight="200"
IsEnabled="{Binding CourseListIsEnabled}"
ItemContainerStyle="{DynamicResource ListViewItemContainerStyle}"
ItemsSource="{Binding Path=AllCoursesSource.View}"
ScrollViewer.VerticalScrollBarVisibility="Auto"
SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding CourseId}" Header="{Binding Path=Strings.CourseId, Source={StaticResource ApplicationResources}}" />
<GridViewColumn DisplayMemberBinding="{Binding Title}" Header="{Binding Path=Strings.CourseName, 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=FilterTitleCommand}"
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="courseGrid"
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" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<di:DisplayLabel x:Name="titleLabel"
Grid.Row="0"
Grid.Column="0"
Margin="0,0,10,10"
Target="{Binding ElementName=titleTextBox}" />
<DockPanel Grid.Row="0"
Grid.Column="1"
Margin="0,0,10,10"
LastChildFill="True">
<di:DescriptionViewer x:Name="titleDescriptionViewer"
DockPanel.Dock="Right"
Target="{Binding ElementName=titleTextBox}" />
<TextBox x:Name="titleTextBox"
Margin="0,0,5,0"
HorizontalAlignment="Stretch"
DockPanel.Dock="Left"
Text="{Binding Path=CurrentCourse.Title,
Mode=TwoWay,
NotifyOnValidationError=True,
ValidatesOnNotifyDataErrors=True,
ValidatesOnExceptions=True}" />
</DockPanel>
<di:DisplayLabel x:Name="instructorLabel"
Grid.Row="1"
Grid.Column="0"
Margin="0,0,10,10"
Target="{Binding ElementName=instructorComboBox}" />
<DockPanel Grid.Row="1"
Grid.Column="1"
Margin="0,0,10,10"
LastChildFill="True">
<di:DescriptionViewer x:Name="instructorDescriptionViewer"
DockPanel.Dock="Right"
Target="{Binding ElementName=instructorComboBox}" />
<local:ComboBoxEx x:Name="instructorComboBox"
Margin="0,0,5,0"
DisplayMemberPath="Name"
DockPanel.Dock="Left"
ItemsSource="{Binding Path=AllInstructorsSource.View}"
SelectedValuePath="PersonId"
SelectedValueProper="{Binding Path=CurrentCourse.InstructorId,
Mode=TwoWay,
NotifyOnValidationError=True,
ValidatesOnNotifyDataErrors=True,
ValidatesOnExceptions=True}" />
</DockPanel>
<di:DisplayLabel x:Name="startDateLabel"
Grid.Row="2"
Grid.Column="0"
Margin="0,0,10,10"
Target="{Binding ElementName=startDateDatePicker}" />
<DockPanel Grid.Row="2"
Grid.Column="1"
Margin="0,0,10,10"
LastChildFill="True">
<di:DescriptionViewer x:Name="startDateDescriptionViewer"
DockPanel.Dock="Right"
Target="{Binding ElementName=startDateDatePicker}" />
<DatePicker x:Name="startDateDatePicker"
Margin="0,0,5,0"
DockPanel.Dock="Left"
SelectedDate="{Binding Path=CurrentCourse.StartDate,
Mode=TwoWay,
NotifyOnValidationError=True,
ValidatesOnNotifyDataErrors=True,
ValidatesOnExceptions=True}" />
</DockPanel>
<di:DisplayLabel x:Name="endDateLabel"
Grid.Row="3"
Grid.Column="0"
Margin="0,0,10,10"
Target="{Binding ElementName=endDateDatePicker}" />
<DockPanel Grid.Row="3"
Grid.Column="1"
Margin="0,0,10,10"
LastChildFill="True">
<di:DescriptionViewer x:Name="endDateDescriptionViewer"
DockPanel.Dock="Right"
Target="{Binding ElementName=endDateDatePicker}" />
<DatePicker x:Name="endDateDatePicker"
Margin="0,0,5,0"
DockPanel.Dock="Left"
SelectedDate="{Binding Path=CurrentCourse.EndDate,
Mode=TwoWay,
NotifyOnValidationError=True,
ValidatesOnNotifyDataErrors=True,
ValidatesOnExceptions=True}" />
</DockPanel>
<di:DisplayLabel x:Name="classSizeLabel"
Grid.Row="4"
Grid.Column="0"
Margin="0,0,10,10"
Target="{Binding ElementName=classSizeMaskedTextBox}" />
<DockPanel Grid.Row="4"
Grid.Column="1"
Margin="0,0,10,10"
LastChildFill="True">
<di:DescriptionViewer x:Name="classSizeDescriptionViewer"
DockPanel.Dock="Right"
Target="{Binding ElementName=classSizeMaskedTextBox}" />
<extToolkit:MaskedTextBox x:Name="classSizeMaskedTextBox"
Margin="0,0,5,0"
HorizontalAlignment="Stretch"
DockPanel.Dock="Left"
Mask="999"
Value="{Binding Path=CurrentCourse.ClassSize,
Mode=TwoWay,
NotifyOnValidationError=True,
ValidatesOnNotifyDataErrors=True,
ValidatesOnExceptions=True}" Text="" />
</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=AddCourseCommand}"
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=DeleteCourseCommand}"
Content="{Binding Path=Strings.ButtonDelete,
Source={StaticResource ApplicationResources}}" />
<Button x:Name="editCommitCourseButton"
Width="75"
Height="23"
Margin="0,10,86,5"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding Path=EditCommitCourseCommand}"
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=CancelEditCourseCommand}"
Content="{Binding Path=Strings.ButtonCancel,
Source={StaticResource ApplicationResources}}" />
</Grid>
<di:ValidationSummary x:Name="courseValidationSummary"
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="10,0,10,20"
local:ValidationSummaryBehavior.TargetofObjectError="{Binding Path=CurrentCourse}"
Target="{Binding ElementName=courseGrid}" />
</Grid>
<TextBlock Margin="0,10"
VerticalAlignment="Center"
FontSize="14"
FontWeight="Bold"
Text="{Binding Path=Strings.CourseEnrollmentPageTitle,
Source={StaticResource ApplicationResources}}" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border Grid.RowSpan="3"
Grid.ColumnSpan="2"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="5">
<Border.Effect>
<DropShadowEffect ShadowDepth="3" />
</Border.Effect>
</Border>
<ListView x:Name="enrollmentListView"
Grid.Row="0"
Grid.Column="0"
MaxWidth="400"
MaxHeight="200"
Margin="10,20"
IsEnabled="{Binding EnrollmentListIsEnabled}"
ItemContainerStyle="{DynamicResource ListViewItemContainerStyle}"
ItemsSource="{Binding Path=EnrollmentsSource.View}"
ScrollViewer.VerticalScrollBarVisibility="Auto"
SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding EnrollmentId}" Header="{Binding Path=Strings.EnrollmentId, Source={StaticResource ApplicationResources}}" />
<GridViewColumn DisplayMemberBinding="{Binding Student.Name}" Header="{Binding Path=Strings.StudentName, Source={StaticResource ApplicationResources}}" />
</GridView>
</ListView.View>
</ListView>
<Grid x:Name="enrollmentGrid"
Grid.Row="0"
Grid.Column="1"
Width="Auto"
MaxHeight="340"
Margin="10,20">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90" />
<ColumnDefinition MinWidth="150" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<di:DisplayLabel x:Name="studentLabel"
Grid.Row="0"
Grid.Column="0"
Margin="0,0,10,10"
Target="{Binding ElementName=studentComboBox}" />
<DockPanel Grid.Row="0"
Grid.Column="1"
Margin="0,0,10,10"
LastChildFill="True">
<di:DescriptionViewer x:Name="studentDescriptionViewer"
DockPanel.Dock="Right"
Target="{Binding ElementName=studentComboBox}" />
<local:ComboBoxEx x:Name="studentComboBox"
Margin="0,0,5,0"
DisplayMemberPath="Name"
DockPanel.Dock="Left"
IsHitTestVisible="{Binding Path=StudentComboIsEditable}"
IsTabStop="{Binding Path=StudentComboIsEditable}"
ItemsSource="{Binding Path=AllStudentsSource.View}"
SelectedValuePath="PersonId"
SelectedValueProper="{Binding Path=CurrentEnrollment.StudentId,
Mode=TwoWay,
NotifyOnValidationError=True,
ValidatesOnNotifyDataErrors=True,
ValidatesOnExceptions=True}" />
</DockPanel>
<di:DisplayLabel x:Name="paidLabel"
Grid.Row="1"
Grid.Column="0"
Margin="0,0,10,10"
Target="{Binding ElementName=paidCheckBox}" />
<DockPanel Grid.Row="1"
Grid.Column="1"
Margin="0,0,10,10"
LastChildFill="True">
<di:DescriptionViewer x:Name="paidDescriptionViewer"
DockPanel.Dock="Right"
Target="{Binding ElementName=paidCheckBox}" />
<CheckBox x:Name="paidCheckBox"
Margin="0,0,5,0"
DockPanel.Dock="Left"
IsChecked="{Binding Path=CurrentEnrollment.Paid,
Mode=TwoWay}" />
</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=AddEnrollmentCommand}"
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=DeleteEnrollmentCommand}"
Content="{Binding Path=Strings.ButtonDelete,
Source={StaticResource ApplicationResources}}" />
<Button x:Name="editCommitEnrollmentButton"
Width="75"
Height="23"
Margin="0,10,86,5"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding Path=EditCommitEnrollmentCommand}"
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=CancelEditEnrollmentCommand}"
Content="{Binding Path=Strings.ButtonCancel,
Source={StaticResource ApplicationResources}}" />
</Grid>
<di:ValidationSummary x:Name="enrollmentValidationSummary"
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="10,0,10,20"
Target="{Binding ElementName=enrollmentGrid}" />
</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=RefreshCourseCommand}"
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=SubmitCourseChangeCommand}"
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=CancelCourseChangeCommand}"
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>