Skip to content

Commit 2efc2c9

Browse files
committed
Added user experience to group samples
1 parent 522a533 commit 2efc2c9

11 files changed

Lines changed: 237 additions & 97 deletions

File tree

.editorconfig

Lines changed: 128 additions & 71 deletions
Large diffs are not rendered by default.

assets/SampleIcons.afdesign

16.6 KB
Binary file not shown.

samples/MADE.Samples/MADE.Samples.Shared/App.xaml.cs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
namespace MADE.Samples
22
{
33
using System;
4-
using System.Threading.Tasks;
54
using CommunityToolkit.Mvvm.DependencyInjection;
65
using CommunityToolkit.Mvvm.Messaging;
76
using MADE.Diagnostics;
@@ -43,14 +42,9 @@ public static IServiceProvider Services
4342
}
4443

4544

46-
protected override async void OnLaunched(LaunchActivatedEventArgs e)
45+
protected override void OnLaunched(LaunchActivatedEventArgs e)
4746
{
48-
await this.ActivateAsync(e.PrelaunchActivated);
49-
}
50-
51-
protected override async void OnActivated(IActivatedEventArgs args)
52-
{
53-
await this.ActivateAsync(false);
47+
this.Activate(e.PrelaunchActivated);
5448
}
5549

5650
private static IServiceProvider ConfigureServices(Frame rootFrame)
@@ -72,7 +66,7 @@ private static void OnNavigationFailed(object sender, NavigationFailedEventArgs
7266
throw new InvalidOperationException($"Failed to load page {e.SourcePageType.FullName}.");
7367
}
7468

75-
private async Task ActivateAsync(bool isPrelaunch)
69+
private void Activate(bool isPrelaunch)
7670
{
7771
#if NET5_0 && WINDOWS
7872
var window = new Window();
@@ -91,12 +85,11 @@ private async Task ActivateAsync(bool isPrelaunch)
9185
this.serviceProvider = ConfigureServices(rootFrame);
9286

9387
IAppDiagnostics diagnostics = this.serviceProvider.GetService<IAppDiagnostics>();
94-
if (diagnostics != null)
95-
{
96-
await diagnostics.StartRecordingDiagnosticsAsync();
97-
}
88+
diagnostics?.StartRecordingDiagnosticsAsync();
9889
}
9990

91+
Console.WriteLine($"Launching. IsPreLaunch: {isPrelaunch}. Content: {rootFrame.Content}");
92+
10093
if (!isPrelaunch)
10194
{
10295
if (rootFrame.Content is null)

samples/MADE.Samples/MADE.Samples.Shared/Features/Home/Pages/MainPage.xaml

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,70 @@
33
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
44
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
55
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6+
xmlns:data="using:MADE.Samples.Features.Samples.Data"
67
xmlns:extensions="using:MADE.UI.Extensions"
78
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
89
xmlns:pages="using:MADE.UI.Views.Navigation.Pages"
910
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
1011
mc:Ignorable="d">
1112

13+
<pages:MvvmPage.Resources>
14+
<ResourceDictionary>
15+
<CollectionViewSource
16+
x:Key="SamplesSource"
17+
IsSourceGrouped="True"
18+
ItemsPath="Samples"
19+
Source="{x:Bind ViewModel.Samples}" />
20+
</ResourceDictionary>
21+
</pages:MvvmPage.Resources>
22+
1223
<Grid Padding="12">
1324
<GridView
1425
extensions:ListViewBaseExtensions.ItemClickCommand="{x:Bind ViewModel.NavigateToSampleCommand}"
1526
IsItemClickEnabled="true"
16-
ItemsSource="{x:Bind ViewModel.Samples}" />
27+
ItemsSource="{Binding Source={StaticResource SamplesSource}}"
28+
SelectionMode="None">
29+
<GridView.GroupStyle>
30+
<GroupStyle HidesIfEmpty="True">
31+
<GroupStyle.HeaderTemplate>
32+
<DataTemplate>
33+
<TextBlock Text="{Binding Name}" />
34+
</DataTemplate>
35+
</GroupStyle.HeaderTemplate>
36+
</GroupStyle>
37+
</GridView.GroupStyle>
38+
<GridView.ItemTemplate>
39+
<DataTemplate x:DataType="data:Sample">
40+
<StackPanel Padding="12" Background="Transparent">
41+
<Grid Height="160">
42+
<Border>
43+
<Image Source="{Binding IconPath}" />
44+
</Border>
45+
</Grid>
46+
47+
<Grid Margin="0,12,0,0">
48+
<Grid.RowDefinitions>
49+
<RowDefinition Height="Auto" />
50+
<RowDefinition Height="Auto" />
51+
</Grid.RowDefinitions>
52+
53+
<TextBlock
54+
VerticalAlignment="Center"
55+
Style="{StaticResource BodyTextBlockStyle}"
56+
Text="{Binding Name}"
57+
TextTrimming="CharacterEllipsis" />
58+
59+
<TextBlock
60+
Grid.Row="1"
61+
VerticalAlignment="Center"
62+
MaxLines="2"
63+
Style="{StaticResource CaptionTextBlockStyle}"
64+
Text="{Binding Description}"
65+
TextTrimming="CharacterEllipsis" />
66+
</Grid>
67+
</StackPanel>
68+
</DataTemplate>
69+
</GridView.ItemTemplate>
70+
</GridView>
1771
</Grid>
1872
</pages:MvvmPage>

samples/MADE.Samples/MADE.Samples.Shared/Features/Home/ViewModels/MainPageViewModel.cs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ namespace MADE.Samples.Features.Home.ViewModels
55
using CommunityToolkit.Mvvm.Input;
66
using CommunityToolkit.Mvvm.Messaging;
77
using MADE.Samples.Features.Samples.Data;
8+
using MADE.Samples.Features.Samples.Pages;
89
using MADE.UI.Views.Navigation;
910
using MADE.UI.Views.Navigation.ViewModels;
10-
using MADE.Samples.Features.Samples.Pages;
1111

1212
public class MainPageViewModel : PageViewModel
1313
{
@@ -18,13 +18,19 @@ public MainPageViewModel(INavigationService navigationService, IMessenger messen
1818

1919
public ICommand NavigateToSampleCommand => new RelayCommand<Sample>(this.NavigateToSample);
2020

21-
public ICollection<Sample> Samples { get; } = new List<Sample>
21+
public ICollection<SampleGroup> Samples { get; } = new List<SampleGroup>
2222
{
23-
new Sample
23+
new SampleGroup
2424
{
25-
Name = "FileInput",
26-
Category = "Controls",
27-
Page = typeof(FilePickerPage)
25+
Name = "Controls",
26+
Samples = new List<Sample>
27+
{
28+
new Sample(
29+
"FilePicker",
30+
typeof(FilePickerPage),
31+
string.Empty,
32+
"/Features/Samples/Assets/FilePicker.png")
33+
}
2834
}
2935
};
3036

4.33 KB
Loading

samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Data/Sample.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,22 @@ namespace MADE.Samples.Features.Samples.Data
44

55
public class Sample
66
{
7+
public Sample()
8+
{
9+
}
10+
11+
public Sample(string name, Type page, string description, string iconPath)
12+
{
13+
this.Name = name;
14+
this.Page = page;
15+
this.Description = description;
16+
this.IconPath = iconPath;
17+
}
18+
719
public string Name { get; set; }
820

921
public string Description { get; set; }
1022

11-
public string Category { get; set; }
12-
1323
public string IconPath { get; set; }
1424

1525
public Type Page { get; set; }
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
namespace MADE.Samples.Features.Samples.Data
2+
{
3+
using System.Collections.Generic;
4+
5+
public class SampleGroup
6+
{
7+
public string Name { get; set; }
8+
9+
public IEnumerable<Sample> Samples { get; set; }
10+
}
11+
}

samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/Pages/FilePickerPage.xaml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
77
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
88
xmlns:pages="using:MADE.UI.Views.Navigation.Pages"
9+
xmlns:win="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
910
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
1011
mc:Ignorable="d">
1112

@@ -15,17 +16,17 @@
1516
<RowDefinition Height="*" />
1617
</Grid.RowDefinitions>
1718

18-
<CommandBar>
19-
<CommandBar.Content>
19+
<win:CommandBar>
20+
<win:CommandBar.Content>
2021
<Button
2122
x:Name="BackButton"
2223
VerticalAlignment="Top"
2324
Command="{x:Bind ViewModel.GoBackCommand}"
2425
IsEnabled="{x:Bind Frame.CanGoBack, Mode=OneWay}"
2526
Style="{StaticResource NavigationBackButtonNormalStyle}"
2627
ToolTipService.ToolTip="Back" />
27-
</CommandBar.Content>
28-
</CommandBar>
28+
</win:CommandBar.Content>
29+
</win:CommandBar>
2930

3031
<Grid Grid.Row="1" Padding="12">
3132
<Grid.RowDefinitions>
@@ -51,6 +52,7 @@
5152
x:Name="FilePickerControl"
5253
Margin="0,12,0,0"
5354
AppendFiles="True"
55+
FileTypes="{x:Bind ViewModel.FilePickerTypes}"
5456
Files="{x:Bind ViewModel.FilePickerFiles}"
5557
Header="FilePicker with multiple item selection"
5658
SelectionMode="Multiple" />

samples/MADE.Samples/MADE.Samples.Shared/Features/Samples/ViewModels/FilePickerPageViewModel.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
namespace MADE.Samples.Features.Samples.ViewModels
22
{
3+
using System.Collections.Generic;
34
using System.Collections.ObjectModel;
45
using CommunityToolkit.Mvvm.Messaging;
56
using MADE.UI.Controls;
@@ -15,5 +16,7 @@ public FilePickerPageViewModel(INavigationService navigationService, IMessenger
1516

1617
public ObservableCollection<FilePickerItem> FilePickerFiles { get; } =
1718
new ObservableCollection<FilePickerItem>();
19+
20+
public ICollection<string> FilePickerTypes => new List<string> { ".jpg" };
1821
}
1922
}

0 commit comments

Comments
 (0)