Add project files.
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
<UserControl
|
||||
x:Class="WeddingBooth.Views.CameraView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:camera="clr-namespace:TheXamlGuy.Framework.Camera;assembly=Camera"
|
||||
xmlns:markup="clr-namespace:WeddingBooth.Markups"
|
||||
x:Name="Camera"
|
||||
VisualStateExtension.IsStateTriggersAttached="True">
|
||||
<UserControl.Resources>
|
||||
<BindingProxy x:Key="BindingProxy" DataContext="{Binding}" />
|
||||
<BindingProxy x:Key="CountdownProxy" DataContext="{Binding ElementName=Countdown}" />
|
||||
<BindingProxy x:Key="CameraProxy" DataContext="{Binding ElementName=Camera}" />
|
||||
<BindingProxy x:Key="ImageProxy" DataContext="{Binding ElementName=Image}" />
|
||||
</UserControl.Resources>
|
||||
<Grid>
|
||||
<CameraPreview x:Name="CameraPreview">
|
||||
<CameraPreview.LayoutTransform>
|
||||
<RotateTransform Angle="90" />
|
||||
</CameraPreview.LayoutTransform>
|
||||
</CameraPreview>
|
||||
<ProgressRing
|
||||
x:Name="ProgressRing"
|
||||
Width="500"
|
||||
Height="500"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
IsActive="True"
|
||||
IsIndeterminate="True"
|
||||
Opacity="0"
|
||||
Thickness="12" />
|
||||
<Countdown
|
||||
x:Name="Countdown"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Completed="{Composite {State {Binding Source={StaticResource CameraProxy}, Path=DataContext},
|
||||
Completed},
|
||||
{ChangeProperty {Binding},
|
||||
CanCapture,
|
||||
false},
|
||||
{Invoke Capture}}"
|
||||
CountdownIdentifier="FiveSecond"
|
||||
FontFamily="{StaticResource ContentControlFontFamily}"
|
||||
FontSize="300"
|
||||
Foreground="White"
|
||||
TextBlock.FontWeight="Thin" />
|
||||
<Image
|
||||
x:Name="Image"
|
||||
Opacity="0"
|
||||
Stretch="Fill">
|
||||
<Image.LayoutTransform>
|
||||
<RotateTransform Angle="90" />
|
||||
</Image.LayoutTransform>
|
||||
</Image>
|
||||
<Border
|
||||
x:Name="FlashOverlay"
|
||||
Background="White"
|
||||
Opacity="0"
|
||||
RenderTransformOrigin="0.5,0.5">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontFamily="{StaticResource AccentFontFamily}"
|
||||
FontSize="288"
|
||||
Text="Smile!" />
|
||||
<Border.RenderTransform>
|
||||
<ScaleTransform x:Name="ScaleTransform" />
|
||||
</Border.RenderTransform>
|
||||
</Border>
|
||||
</Grid>
|
||||
<Interaction.XamlEventAggregator>
|
||||
<XamlEventAggregator EventAggregator="{Binding Source={StaticResource BindingProxy}, Path=DataContext.EventAggregator}">
|
||||
<EventSubscriber Invoked="{Composite {ChangeProperty {Binding Source={StaticResource ImageProxy}, Path=DataContext}, Source, {EventParameter Invoked, {markup:CapturedConverter}}}, {State {Binding Source={StaticResource CameraProxy}, Path=DataContext}, Captured}, {ChangeProperty {Binding}, CanCapture, true}}" Type="{x:Type camera:Captured}" />
|
||||
</XamlEventAggregator>
|
||||
</Interaction.XamlEventAggregator>
|
||||
<Interaction.InteractiveFrame>
|
||||
<InteractiveFrame EventAggregator="{Binding Source={StaticResource BindingProxy}, Path=DataContext.EventAggregator}">
|
||||
<InteractiveFrameButton Invoked="{Composite {Condition {Binding CanCapture}, {Invoke Start, BindingTarget={Binding Source={StaticResource CountdownProxy}, Path=DataContext}}, {State {Binding Source={StaticResource CameraProxy}, Path=DataContext}, Started}}}" Placement="Top" />
|
||||
</InteractiveFrame>
|
||||
</Interaction.InteractiveFrame>
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup x:Name="PhotoStates">
|
||||
<VisualState x:Name="Started">
|
||||
<Storyboard>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="ProgressRing" Storyboard.TargetProperty="(UIElement.Opacity)">
|
||||
<DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="1" />
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Completed">
|
||||
<Storyboard>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="ScaleTransform" Storyboard.TargetProperty="ScaleX">
|
||||
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="2.05" />
|
||||
<SplineDoubleKeyFrame
|
||||
KeySpline="0,0,0,1"
|
||||
KeyTime="00:00:00.250"
|
||||
Value="1.0" />
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="ScaleTransform" Storyboard.TargetProperty="ScaleY">
|
||||
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="2.05" />
|
||||
<SplineDoubleKeyFrame
|
||||
KeySpline="0,0,0,1"
|
||||
KeyTime="00:00:00.250"
|
||||
Value="1.0" />
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="FlashOverlay" Storyboard.TargetProperty="(UIElement.Opacity)">
|
||||
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="0.0" />
|
||||
<LinearDoubleKeyFrame KeyTime="00:00:00.167" Value="1.0" />
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="ProgressRing" Storyboard.TargetProperty="(UIElement.Opacity)">
|
||||
<DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="0" />
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Captured">
|
||||
<Storyboard>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="Image" Storyboard.TargetProperty="(UIElement.Opacity)">
|
||||
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="1" />
|
||||
<SplineDoubleKeyFrame KeyTime="00:00:04" Value="1" />
|
||||
<SplineDoubleKeyFrame KeyTime="00:00:04.168" Value="0" />
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="ScaleTransform" Storyboard.TargetProperty="ScaleX">
|
||||
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="1.0" />
|
||||
<SplineDoubleKeyFrame
|
||||
KeySpline="0,0,0,1"
|
||||
KeyTime="00:00:00.167"
|
||||
Value="1.05" />
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="ScaleTransform" Storyboard.TargetProperty="ScaleY">
|
||||
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="1.0" />
|
||||
<SplineDoubleKeyFrame
|
||||
KeySpline="0,0,0,1"
|
||||
KeyTime="00:00:00.167"
|
||||
Value="1.05" />
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="FlashOverlay" Storyboard.TargetProperty="(UIElement.Opacity)">
|
||||
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="1.0" />
|
||||
<LinearDoubleKeyFrame KeyTime="00:00:00.083" Value="0.0" />
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,16 @@
|
||||
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public partial class CameraView
|
||||
{
|
||||
public CameraView()
|
||||
{
|
||||
InitializeComponent();
|
||||
Loaded += CameraView_Loaded;
|
||||
}
|
||||
|
||||
private void CameraView_Loaded(object sender, System.Windows.RoutedEventArgs e)
|
||||
{
|
||||
CameraPreview.StartAsync();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using TheXamlGuy.Framework.Camera;
|
||||
using TheXamlGuy.Framework.Core;
|
||||
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public class CameraViewModel : ObservableViewModel
|
||||
{
|
||||
public CameraViewModel(IPropertyBuilder propertyBuilder,
|
||||
IEventAggregator eventAggregator,
|
||||
IServiceFactory serviceFactory,
|
||||
IDisposer disposer) : base(propertyBuilder, eventAggregator, serviceFactory, disposer)
|
||||
{
|
||||
}
|
||||
|
||||
public bool CanCapture { get; set; } = true;
|
||||
|
||||
public void Capture()
|
||||
{
|
||||
EventAggregator.Publish<Capture>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<UserControl x:Class="WeddingBooth.Views.GalleryView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:WeddingBooth.Views"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="800">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="100"
|
||||
Text="GALLERY VIEW" />
|
||||
</UserControl>
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace WeddingBooth.Views
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for GalleryView.xaml
|
||||
/// </summary>
|
||||
public partial class GalleryView : UserControl
|
||||
{
|
||||
public GalleryView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using TheXamlGuy.Framework.Core;
|
||||
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public class GalleryViewModel : ObservableViewModel
|
||||
{
|
||||
public GalleryViewModel(IPropertyBuilder propertyBuilder,
|
||||
IEventAggregator eventAggregator,
|
||||
IServiceFactory serviceFactory,
|
||||
IDisposer disposer) : base(propertyBuilder, eventAggregator, serviceFactory, disposer)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using TheXamlGuy.Framework.Core;
|
||||
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public class GuestViewModel : ObservableViewModel
|
||||
{
|
||||
public GuestViewModel(IPropertyBuilder propertyBuilder,
|
||||
IEventAggregator eventAggregator,
|
||||
IServiceFactory serviceFactory,
|
||||
IDisposer disposer,
|
||||
string name) : base(propertyBuilder, eventAggregator, serviceFactory, disposer)
|
||||
{
|
||||
Name = name;
|
||||
}
|
||||
|
||||
public string Name { get; }
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<Window
|
||||
x:Class="WeddingBooth.Views.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Content="{Route {Binding Route},
|
||||
Root}"
|
||||
Loaded="{Navigate {Binding EventAggregator},
|
||||
Root,
|
||||
Navigation}"
|
||||
WindowStyle="None" />
|
||||
@@ -0,0 +1,23 @@
|
||||
using System.Linq;
|
||||
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public partial class MainWindow
|
||||
{
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
//var DeviceManager = new CameraDeviceManager();
|
||||
//DeviceManager.ConnectToCamera();
|
||||
|
||||
//DeviceManager.AddDevice(d[3].Connect("192.168.1.1"));
|
||||
|
||||
//DeviceManager.CameraConnected += DeviceManager_CameraConnected;
|
||||
|
||||
//DeviceManager.SelectedCameraDevice.PhotoCaptured += SelectedCameraDevice_PhotoCaptured;
|
||||
|
||||
//DeviceManager.SelectedCameraDevice.CapturePhoto();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using TheXamlGuy.Framework.Core;
|
||||
using TheXamlGuy.Framework.WPF;
|
||||
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public class MainWindowViewModel : ObservableViewModel
|
||||
{
|
||||
public MainWindowViewModel(IPropertyBuilder propertyBuilder,
|
||||
IEventAggregator eventAggregator,
|
||||
IServiceFactory serviceFactory,
|
||||
IDisposer disposer,
|
||||
IRoute route) : base(propertyBuilder, eventAggregator, serviceFactory, disposer)
|
||||
{
|
||||
Route = route;
|
||||
}
|
||||
|
||||
public IRoute Route { get; }
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<UserControl
|
||||
x:Class="WeddingBooth.Views.NavigationView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<UserControl.Resources>
|
||||
<BindingProxy x:Key="BindingProxy" DataContext="{Binding}" />
|
||||
<BindingProxy x:Key="FlipViewProxy" DataContext="{Binding ElementName=FlipView}" />
|
||||
</UserControl.Resources>
|
||||
<FlipView
|
||||
x:Name="FlipView"
|
||||
ItemContainerTemplateSelector="{Binding TemplateSelector}"
|
||||
ItemsSource="{Binding}"
|
||||
UsesItemContainerTemplateSelector="True" />
|
||||
<Interaction.InteractiveFrame>
|
||||
<InteractiveFrame EventAggregator="{Binding Source={StaticResource BindingProxy}, Path=DataContext.EventAggregator}">
|
||||
<InteractiveFrameButton Invoked="{Invoke Previous, BindingTarget={Binding Source={StaticResource FlipViewProxy}, Path=DataContext}}" Placement="Left" />
|
||||
<InteractiveFrameButton Invoked="{Invoke Next, BindingTarget={Binding Source={StaticResource FlipViewProxy}, Path=DataContext}}" Placement="Right" />
|
||||
</InteractiveFrame>
|
||||
</Interaction.InteractiveFrame>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public partial class NavigationView
|
||||
{
|
||||
public NavigationView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using TheXamlGuy.Framework.Core;
|
||||
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public class NavigationViewModel : ObservableViewModelCollection<IObservableViewModel>
|
||||
{
|
||||
public NavigationViewModel(IPropertyBuilder propertyBuilder,
|
||||
IEventAggregator eventAggregator,
|
||||
IServiceFactory serviceFactory,
|
||||
IDisposer disposer,
|
||||
ITemplateSelector templateSelector) : base(propertyBuilder, eventAggregator, serviceFactory, disposer)
|
||||
{
|
||||
TemplateSelector = templateSelector;
|
||||
}
|
||||
|
||||
public ITemplateSelector TemplateSelector { get; }
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace WeddingBooth.LifeCycles
|
||||
{
|
||||
public class SeatingChartConfiguration : List<Table>
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using TheXamlGuy.Framework.Core;
|
||||
using TheXamlGuy.Framework.WPF;
|
||||
using WeddingBooth.Views;
|
||||
|
||||
namespace WeddingBooth.LifeCycles
|
||||
{
|
||||
public class SeatingChartNavigatedHandler : IMediatorHandler<Navigated<SeatingChartView, SeatingChartViewModel>>
|
||||
{
|
||||
private readonly SeatingChartConfiguration configuration;
|
||||
|
||||
public SeatingChartNavigatedHandler(SeatingChartConfiguration configuration)
|
||||
{
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
public void Handle(Navigated<SeatingChartView, SeatingChartViewModel> request)
|
||||
{
|
||||
foreach (Table table in configuration)
|
||||
{
|
||||
if(request.DataContext?.Add(table.Name) is TableViewModel tableViewModel)
|
||||
{
|
||||
foreach (string guest in table.Guests)
|
||||
{
|
||||
tableViewModel.Add(guest);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<UserControl
|
||||
x:Class="WeddingBooth.Views.SeatingChartView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Margin="40,40,16,16">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="18" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
HorizontalAlignment="Center"
|
||||
FontFamily="{StaticResource AccentFontFamily}"
|
||||
FontWeight="Normal"
|
||||
Style="{StaticResource LargeDisplayTextBlockStyle}"
|
||||
Text="find your seat" />
|
||||
<ItemsControl
|
||||
Grid.Row="2"
|
||||
ItemTemplateSelector="{Binding TemplateSelector}"
|
||||
ItemsSource="{Binding}">
|
||||
<ItemsControl.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<UniformGrid Columns="3" />
|
||||
</ItemsPanelTemplate>
|
||||
</ItemsControl.ItemsPanel>
|
||||
</ItemsControl>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,11 @@
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public partial class SeatingChartView : UserControl
|
||||
{
|
||||
public SeatingChartView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using TheXamlGuy.Framework.Core;
|
||||
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public class SeatingChartViewModel : ObservableViewModelCollection<TableViewModel>
|
||||
{
|
||||
public SeatingChartViewModel(IPropertyBuilder propertyBuilder,
|
||||
IEventAggregator eventAggregator,
|
||||
IServiceFactory serviceFactory,
|
||||
IDisposer disposer,
|
||||
ITemplateSelector templateSelector) : base(propertyBuilder, eventAggregator, serviceFactory, disposer)
|
||||
{
|
||||
TemplateSelector = templateSelector;
|
||||
}
|
||||
|
||||
public ITemplateSelector TemplateSelector { get; }
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<UserControl
|
||||
x:Class="WeddingBooth.Views.TableView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<UserControl.Resources>
|
||||
<SolidColorBrush x:Key="BorderBrush" Color="#FF8C8C8C" />
|
||||
</UserControl.Resources>
|
||||
<Border
|
||||
Margin="0,0,24,24"
|
||||
BorderBrush="{StaticResource BorderBrush}"
|
||||
BorderThickness="1">
|
||||
<Grid Margin="24">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
HorizontalAlignment="Center"
|
||||
FontFamily="{StaticResource AccentFontFamily}"
|
||||
FontWeight="Normal"
|
||||
FontSize="92"
|
||||
Margin="0 0 0 -28"
|
||||
Text="{Binding Name}" />
|
||||
<ItemsControl
|
||||
Grid.Row="2"
|
||||
HorizontalAlignment="Center"
|
||||
ItemsSource="{Binding}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock
|
||||
Margin="0,0,0,2"
|
||||
FontWeight="Thin"
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="{Binding Name}"
|
||||
TextAlignment="Center" />
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</Grid>
|
||||
</Border>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public partial class TableView
|
||||
{
|
||||
public TableView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using TheXamlGuy.Framework.Core;
|
||||
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public class TableViewModel : ObservableViewModelCollection<GuestViewModel>
|
||||
{
|
||||
public TableViewModel(IPropertyBuilder propertyBuilder,
|
||||
IEventAggregator eventAggregator,
|
||||
IServiceFactory serviceFactory,
|
||||
IDisposer disposer,
|
||||
string name) : base(propertyBuilder, eventAggregator, serviceFactory, disposer)
|
||||
{
|
||||
Name = name;
|
||||
}
|
||||
|
||||
public string Name { get; }
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<UserControl
|
||||
x:Class="WeddingBooth.Views.WelcomeView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||
<TextBlock
|
||||
Margin="0,-0,0,-60"
|
||||
HorizontalAlignment="Center"
|
||||
FontFamily="{StaticResource AccentFontFamily}"
|
||||
FontSize="288"
|
||||
FontWeight="Light"
|
||||
Text="Welcome" />
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
FontStretch="ExtraExpanded"
|
||||
FontWeight="Thin"
|
||||
Style="{StaticResource TitleTextBlockStyle}"
|
||||
Text="TO OUR WEDDING" />
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
FontStretch="ExtraExpanded"
|
||||
FontWeight="Thin"
|
||||
Style="{StaticResource DisplayTextBlockStyle}"
|
||||
Text="LAURA & DANIEL" />
|
||||
<TextBlock
|
||||
Margin="0,0,0,12"
|
||||
HorizontalAlignment="Center"
|
||||
FontStretch="ExtraExpanded"
|
||||
FontWeight="Thin"
|
||||
Style="{StaticResource TitleTextBlockStyle}"
|
||||
Text="OCTOBER 6ᵗʰ, 2022" />
|
||||
<TextBlock
|
||||
HorizontalAlignment="Center"
|
||||
FontStretch="ExtraExpanded"
|
||||
FontWeight="Thin"
|
||||
Style="{StaticResource TitleTextBlockStyle}"
|
||||
Text="LET US MAKE MEMORIES OF OUR SPECIAL EVENING"
|
||||
TextAlignment="Center" />
|
||||
</StackPanel>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace WeddingBooth.Views
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for WelcomeView.xaml
|
||||
/// </summary>
|
||||
public partial class WelcomeView : UserControl
|
||||
{
|
||||
public WelcomeView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using TheXamlGuy.Framework.Core;
|
||||
|
||||
namespace WeddingBooth.Views;
|
||||
|
||||
public class WelcomeViewModel : ObservableViewModel
|
||||
{
|
||||
public WelcomeViewModel(IPropertyBuilder propertyBuilder,
|
||||
IEventAggregator eventAggregator,
|
||||
IServiceFactory serviceFactory,
|
||||
IDisposer disposer) : base(propertyBuilder, eventAggregator, serviceFactory, disposer)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user