Skip to content

Commit

Permalink
Merge pull request #1 from alinapopa/Binding
Browse files Browse the repository at this point in the history
Replace classic bindings with compiled bindings in UWP app
  • Loading branch information
Alina Popa committed Jan 5, 2016
2 parents 69f3b4b + d97b7a8 commit e5170d0
Show file tree
Hide file tree
Showing 22 changed files with 375 additions and 250 deletions.
31 changes: 20 additions & 11 deletions src/MyHealth.Client.Core/ViewModels/NewAppointmentViewModel.cs
Expand Up @@ -43,10 +43,13 @@ public Doctor SelectedDoctor
get { return _selectedDoctor; }
set
{
_selectedDoctor = value;
RaisePropertyChanged(() => SelectedDoctor);
if (value != _selectedDoctor)
{
_selectedDoctor = value;
RaisePropertyChanged(() => SelectedDoctor);

SelectedDate = DateTime.Today;
SelectedDate = DateTime.Today;
}
}
}

Expand All @@ -61,10 +64,13 @@ public string SelectedHour
get { return _selectedHour; }
set
{
_selectedHour = value;
_selectedAppointmentDateAndHour = SelectedDate.WithTime(_selectedHour);
IsEverythingCorrectlyFilled = !string.IsNullOrWhiteSpace(_selectedHour);
RaisePropertyChanged(() => SelectedHour);
if (value != _selectedHour)
{
_selectedHour = value;
_selectedAppointmentDateAndHour = SelectedDate.WithTime(_selectedHour);
IsEverythingCorrectlyFilled = !string.IsNullOrWhiteSpace(_selectedHour);
RaisePropertyChanged(() => SelectedHour);
}
}
}

Expand All @@ -78,12 +84,15 @@ public Specialities SelectedSpeciality
get { return _selectedSpeciality; }
set
{
_selectedSpeciality = value;
if (value != _selectedSpeciality)
{
_selectedSpeciality = value;

RaisePropertyChanged(() => SelectedSpeciality);
RaisePropertyChanged(() => SelectedSpeciality);

SelectedDoctor = null;
GetDoctorsForSpecialtyAsync(_selectedSpeciality).Forget();
SelectedDoctor = null;
GetDoctorsForSpecialtyAsync(_selectedSpeciality).Forget();
}
}
}

Expand Down
4 changes: 4 additions & 0 deletions src/MyHealth.Client.W10.UWP/App.xaml
Expand Up @@ -4,13 +4,16 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyHealth.Client.W10.UWP"
xmlns:converters="using:MyHealth.Client.W10.UWP.Converters"
xmlns:styles="using:MyHealth.Client.W10.UWP.Styles"
RequestedTheme="Light">
<Application.Resources>
<ResourceDictionary>
<!-- Dictionaries -->
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Styles/Styles.xaml"/>
<ResourceDictionary Source="/Styles/Colors.xaml"/>
<ResourceDictionary Source="/Styles/DataTemplates.xaml"/>
<styles:DataTemplates/>
</ResourceDictionary.MergedDictionaries>

<!--Converters-->
Expand All @@ -22,6 +25,7 @@
<converters:BoolToVisibilityConverter x:Key="InverseBoolToVisibilityConverter" Inverse="True"/>
<converters:NativeMedicineToNameWithDosisConverter x:Key="MedicineToNameWithDosisConverter"/>
<converters:NativeMedicineToCountdownConverter x:Key="MedicineToCountdownConverter"/>
<converters:NoOpConverter x:Key="NoOpConverter"/>
</ResourceDictionary>
</Application.Resources>
</Application>
8 changes: 4 additions & 4 deletions src/MyHealth.Client.W10.UWP/Controls/CircularProgressBar.xaml
Expand Up @@ -11,8 +11,8 @@
d:DesignWidth="300">

<Grid Loaded="ControlLoaded">
<Path x:Name="fullPath" Stroke="{Binding Foreground, ElementName=userControl}"
StrokeThickness="{Binding StrokeThickness, ElementName=userControl}"
<Path x:Name="fullPath" Stroke="{x:Bind Foreground}"
StrokeThickness="{x:Bind StrokeThickness}"
HorizontalAlignment="Left" VerticalAlignment="Top">
<Path.Data>
<PathGeometry>
Expand All @@ -30,8 +30,8 @@
</PathGeometry>
</Path.Data>
</Path>
<Path x:Name="pathRoot" Stroke="{Binding SegmentColor, ElementName=userControl}"
StrokeThickness="{Binding StrokeThickness, ElementName=userControl}"
<Path x:Name="pathRoot" Stroke="{x:Bind SegmentColor, Mode=OneWay}"
StrokeThickness="{x:Bind StrokeThickness}"
HorizontalAlignment="Left" VerticalAlignment="Top" StrokeStartLineCap="Round" StrokeEndLineCap="Round">
<Path.Data>
<PathGeometry>
Expand Down
16 changes: 14 additions & 2 deletions src/MyHealth.Client.W10.UWP/Controls/CircularProgressBar.xaml.cs
Expand Up @@ -2,9 +2,9 @@
using Windows.Foundation;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Shapes;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Shapes;

namespace MyHealth.Client.W10.UWP.Controls
{
Expand All @@ -14,7 +14,7 @@ public partial class CircularProgressBar : UserControl

public static readonly DependencyProperty StrokeThicknessProperty = DependencyProperty.Register("StrokeThickness", typeof(int), typeof(CircularProgressBar), new PropertyMetadata(5));

public static readonly DependencyProperty SegmentColorProperty = DependencyProperty.Register("SegmentColor", typeof(GradientBrush), typeof(CircularProgressBar), new PropertyMetadata(new SolidColorBrush(Colors.Red)));
public static readonly DependencyProperty SegmentColorProperty = DependencyProperty.Register("SegmentColor", typeof(GradientBrush), typeof(CircularProgressBar), new PropertyMetadata(GetDefaultSegmentColor()));

public static readonly DependencyProperty RadiusProperty = DependencyProperty.Register("Radius", typeof(int), typeof(CircularProgressBar), new PropertyMetadata(25, new PropertyChangedCallback(OnPropertyChanged)));

Expand Down Expand Up @@ -120,5 +120,17 @@ private void ControlLoaded(object sender, RoutedEventArgs e)
{
RenderArc();
}

private static LinearGradientBrush GetDefaultSegmentColor()
{
GradientStopCollection gsc = new GradientStopCollection()
{
new GradientStop
{
Color = Colors.Red
}
};
return new LinearGradientBrush(gsc, 0);
}
}
}
18 changes: 18 additions & 0 deletions src/MyHealth.Client.W10.UWP/Converters/NoOpConverter.cs
@@ -0,0 +1,18 @@
using System;
using Windows.UI.Xaml.Data;

namespace MyHealth.Client.W10.UWP.Converters
{
class NoOpConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return value;
}

public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return value;
}
}
}
7 changes: 7 additions & 0 deletions src/MyHealth.Client.W10.UWP/MyHealth.Client.W10.UWP.csproj
Expand Up @@ -130,13 +130,15 @@
<Compile Include="Converters\NativeMedicineToCountdownConverter.cs" />
<Compile Include="Converters\NativeMedicineToNameWithDosisConverter.cs" />
<Compile Include="Converters\NativeNotConverter.cs" />
<Compile Include="Converters\NoOpConverter.cs" />
<Compile Include="Converters\StringFormatConverter.cs" />
<Compile Include="Converters\TimeOfDayToStringConverter.cs" />
<Compile Include="DebugTrace.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Services\PushNotifications.cs" />
<Compile Include="Services\UserInteractionService.cs" />
<Compile Include="Setup.cs" />
<Compile Include="Styles\DataTemplates.xaml.cs" />
<Compile Include="Views\AppointmentsView.xaml.cs">
<DependentUpon>AppointmentsView.xaml</DependentUpon>
</Compile>
Expand Down Expand Up @@ -212,6 +214,11 @@
<Generator>MSBuild:Compile</Generator>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Page>
<Page Include="Styles\DataTemplates.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Page>
<Page Include="Styles\Styles.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
Expand Down
8 changes: 8 additions & 0 deletions src/MyHealth.Client.W10.UWP/Styles/Colors.xaml
Expand Up @@ -24,4 +24,12 @@
<GradientStop Color="#FF00D8CC" Offset="0.9"/>
</LinearGradientBrush>

<LinearGradientBrush x:Key="MyHealthMediumGrayGradientThemeBrush">
<GradientStop Color="#FFC4C4C7" Offset="1.0"/>
</LinearGradientBrush>

<LinearGradientBrush x:Key="MyHealthHeaderBlueGradientThemeBrush">
<GradientStop Color="#FF33E0D6" Offset="1.0"/>
</LinearGradientBrush>

</ResourceDictionary>
135 changes: 135 additions & 0 deletions src/MyHealth.Client.W10.UWP/Styles/DataTemplates.xaml
@@ -0,0 +1,135 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MyHealth.Client.W10.UWP.Styles.DataTemplates"
xmlns:controls="using:MyHealth.Client.W10.UWP.Controls"
xmlns:model="using:MyHealth.Client.Core.Model"
xmlns:local="using:MyHealth.Client.W10.UWP.Styles">

<DataTemplate x:Key="TreatmentDataTemplate" x:DataType="model:MedicineWithDoses">
<Grid Height="100"
BorderBrush="{StaticResource MyHealthWhiteThemeBrush}"
BorderThickness="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<controls:CircularProgressBar x:Name="ProgressBar"
Style="{StaticResource BigCircularProgressBarStyle}"
Percentage="{x:Bind Converter={StaticResource MedicineToCountdownConverter}}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Radius="30"
StrokeThickness="4"
Margin="20,10"/>
<TextBlock Text="{x:Bind Medicine, Converter={StaticResource MedicineToNameWithDosisConverter}}"
FontSize="20"
HorizontalAlignment="Left"
Grid.Column="1"
TextTrimming="CharacterEllipsis"
Style="{StaticResource RegularTextStyle}"
VerticalAlignment="Center"/>
<StackPanel VerticalAlignment="Top"
HorizontalAlignment="Right"
Grid.Column="2"
Margin="0,5,5,0">
<TextBlock Text="Next pills in"
Style="{StaticResource RegularTextStyle}"
Foreground="{StaticResource MyHealthBlackThemeBrush}"
Opacity="0.87"
FontSize="13"/>
<TextBlock HorizontalAlignment="Right"
Text="{x:Bind NextDoseTime, Converter={StaticResource TimeOfDayToStringConverter}}"
Style="{StaticResource RegularTextStyle}"
FontSize="13"/>
</StackPanel>
</Grid>
</DataTemplate>

<DataTemplate x:Key="AppointmentDataTemplate" x:DataType="model:ClinicAppointment">
<Grid Height="100"
BorderBrush="{StaticResource MyHealthWhiteThemeBrush}"
BorderThickness="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Ellipse Margin="10,10,10,10"
Width="50"
Height="50"
x:Name="Picture2"
Stroke="{StaticResource MyHealthWhiteThemeBrush}"
StrokeThickness="2">
<Ellipse.Fill>
<ImageBrush Stretch="Fill"
ImageSource="{x:Bind Doctor.Picture, Converter={StaticResource ByteArrayToImageConverter}}"/>
</Ellipse.Fill>
</Ellipse>
<StackPanel Orientation="Vertical"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalAlignment="Center">
<TextBlock Text="{x:Bind Doctor.Name}"
FontSize="22"
VerticalAlignment="Center"
TextTrimming="CharacterEllipsis"/>
<TextBlock Text="{x:Bind Doctor.Speciality}"
FontSize="14"
TextTrimming="CharacterEllipsis"
VerticalAlignment="Center"
Foreground="{StaticResource MyHealthBlackThemeBrush}"/>
</StackPanel>
<StackPanel Orientation="Vertical"
Grid.Column="2"
Margin="5,3,20,0"
HorizontalAlignment="Right"
VerticalAlignment="Top">
<TextBlock Text="{x:Bind DateTime, Converter={StaticResource StringFormatConverter}, ConverterParameter=' {0:MMM dd, yyyy}'}"
FontSize="16"
VerticalAlignment="Center"
HorizontalAlignment="Right"
/>
<TextBlock FontSize="16"
VerticalAlignment="Center"
HorizontalAlignment="Right"
>
<Run Text="{x:Bind DateTime, Converter={StaticResource StringFormatConverter}, ConverterParameter=' {0:h:mm tt}'}"/>
</TextBlock>
</StackPanel>
</Grid>
</DataTemplate>

<DataTemplate x:Key="AppointmentHistoryDataTemplate" x:DataType="model:ClinicAppointment">
<Grid Height="100"
Margin="0,0,0,5"
Background="{StaticResource MyHealthWhiteThemeBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Vertical"
Margin="20,0"
HorizontalAlignment="Left"
VerticalAlignment="Center">
<TextBlock Text="{x:Bind Doctor.Name}"
FontSize="22"
VerticalAlignment="Center"
Foreground="{StaticResource MyHealthBackgroundBlueThemeBrush}"/>
<TextBlock Text="{x:Bind Doctor.Speciality}"
FontSize="14"
VerticalAlignment="Center"
Opacity="0.87"
Foreground="{StaticResource MyHealthBlackThemeBrush}"/>
</StackPanel>
<TextBlock Text="{x:Bind DateTime, Converter={StaticResource StringFormatConverter}, ConverterParameter=' {0:MMM dd, yyyy}'}"
FontSize="16"
Foreground="{StaticResource MyHealthBackgroundBlueThemeBrush}"
Grid.Column="1"
Margin="5,3,20,0"
HorizontalAlignment="Right"
VerticalAlignment="Top"/>
</Grid>
</DataTemplate>
</ResourceDictionary>
11 changes: 11 additions & 0 deletions src/MyHealth.Client.W10.UWP/Styles/DataTemplates.xaml.cs
@@ -0,0 +1,11 @@

namespace MyHealth.Client.W10.UWP.Styles
{
public partial class DataTemplates
{
public DataTemplates()
{
InitializeComponent();
}
}
}

0 comments on commit e5170d0

Please sign in to comment.