Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
d3e8cd5
cleaned NavigationBase
IvanDmitriev1 Aug 1, 2022
068856e
initially implemented navigation
IvanDmitriev1 Aug 1, 2022
449eb02
fixed items
IvanDmitriev1 Aug 1, 2022
e85c868
added navigation stack
IvanDmitriev1 Aug 2, 2022
8fa6a60
a small optimization of the ClearNavigationStack method
IvanDmitriev1 Aug 2, 2022
ca342a3
added IsHidden property to the INavigationItem
IvanDmitriev1 Aug 2, 2022
98d70ad
implemented dynamic breadcrumb
IvanDmitriev1 Aug 2, 2022
a78569c
navigation with previous levels works
IvanDmitriev1 Aug 2, 2022
f1148cf
small breadcrumb optimization
IvanDmitriev1 Aug 2, 2022
e8b4b48
transition can be changed dynamically
IvanDmitriev1 Aug 2, 2022
b7bd799
fixed designer
IvanDmitriev1 Aug 2, 2022
e101be1
implemented navigation without di
IvanDmitriev1 Aug 2, 2022
fe6d8a1
breadcrumb loading fix
IvanDmitriev1 Aug 2, 2022
5c7acfe
implemented ClearCache
IvanDmitriev1 Aug 2, 2022
0032c6e
added breadcrumb demo
IvanDmitriev1 Aug 3, 2022
9a2a6bb
fixed navigation backwards with breadcrumb elements
IvanDmitriev1 Aug 3, 2022
29df3da
the stack navigation parameter has been changed
IvanDmitriev1 Aug 3, 2022
bfef37e
unsubscribed from events
IvanDmitriev1 Aug 5, 2022
ac344a8
fixed firing of navigated event when navigation is not happened
IvanDmitriev1 Aug 5, 2022
744960d
CommunityToolkit.Diagnostics has been updated to version 8.0.0
IvanDmitriev1 Aug 7, 2022
9dfa6e1
added INavigationCancelable
IvanDmitriev1 Aug 15, 2022
921e6bd
added parameters for RoutedNavigationEventArgs
IvanDmitriev1 Aug 15, 2022
49981ea
fixed my mistake
IvanDmitriev1 Aug 15, 2022
5d5e50a
added addToHistory parameter
IvanDmitriev1 Aug 15, 2022
a85a248
separated the logic of the navigation stack from the NavigationManager
IvanDmitriev1 Aug 15, 2022
9f5131d
implemented "complex history" in the NavigationStackManager
IvanDmitriev1 Aug 15, 2022
5527634
fixed my mistake
IvanDmitriev1 Aug 16, 2022
6f116cb
removed addToHistory parameter
IvanDmitriev1 Aug 16, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@
<PackageReference Update="System.ValueTuple" Version="4.5.0" />
<PackageReference Update="NativeMethods" Version="0.0.3" />
<PackageReference Update="Microsoft.VisualStudio.CoreUtility" Version="17.2.3194" />
<PackageReference Update="CommunityToolkit.Diagnostics" Version="8.0.0" />
</ItemGroup>
</Project>
2 changes: 2 additions & 0 deletions src/Wpf.Ui.Demo/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ public partial class App

services.AddScoped<Views.Pages.Icons>();
services.AddScoped<IconsViewModel>();

services.AddScoped<BreadcrumbPagesViewModel>();

// Test windows
services.AddTransient<Views.Windows.TaskManagerWindow>();
Expand Down
31 changes: 31 additions & 0 deletions src/Wpf.Ui.Demo/ViewModels/BreadcrumbPagesViewModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using System.Windows.Input;
using Microsoft.Toolkit.Mvvm.Input;
using Wpf.Ui.Mvvm.Contracts;

namespace Wpf.Ui.Demo.ViewModels;

public class BreadcrumbPagesViewModel
{
public RelayCommand<string> OnClickCommand { get; }
public ICommand OnNavigateBackCommand { get; }

private readonly INavigationService _navigationService;

public BreadcrumbPagesViewModel(INavigationService navigationService)
{
_navigationService = navigationService;

OnClickCommand = new RelayCommand<string>(OnClick);
OnNavigateBackCommand = new RelayCommand(OnNavigateBack);
}

private void OnClick(string pageTag)
{
_navigationService.NavigateTo($"/{pageTag}", this);
}

private void OnNavigateBack()
{
_navigationService.NavigateTo("..");
}
}
3 changes: 1 addition & 2 deletions src/Wpf.Ui.Demo/ViewModels/ButtonsViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,8 @@ public ButtonsViewModel(INavigationService navigationService)
var currentTheme = testGetThemeService.GetSystemTheme();
}


private void OnShowMore(string parameter)
{
_navigationService.Navigate(typeof(Views.Pages.Input));
_navigationService.NavigateTo("/input");
}
}
8 changes: 4 additions & 4 deletions src/Wpf.Ui.Demo/ViewModels/DashboardViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,19 +47,19 @@ private void OnNavigate(string parameter)
switch (parameter)
{
case "navigate_to_input":
_navigationService.Navigate(typeof(Views.Pages.Input));
_navigationService.NavigateTo(typeof(Views.Pages.Input));
return;

case "navigate_to_controls":
_navigationService.Navigate(typeof(Views.Pages.Controls));
_navigationService.NavigateTo(typeof(Views.Pages.Controls));
return;

case "navigate_to_colors":
_navigationService.Navigate(typeof(Views.Pages.Colors));
_navigationService.NavigateTo(typeof(Views.Pages.Colors));
return;

case "navigate_to_icons":
_navigationService.Navigate(typeof(Views.Pages.Icons));
_navigationService.NavigateTo(typeof(Views.Pages.Icons));
return;
}
}
Expand Down
14 changes: 13 additions & 1 deletion src/Wpf.Ui.Demo/Views/Container.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
x:Class="Wpf.Ui.Demo.Views.Container"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:breadcrumbDemo="clr-namespace:Wpf.Ui.Demo.Views.Pages.BreadcrumbDemo"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:demo="clr-namespace:Wpf.Ui.Demo"
xmlns:diagnostics="clr-namespace:Wpf.Ui.Demo.Views.Diagnostics"
Expand Down Expand Up @@ -98,6 +99,12 @@
Content="Theme"
Icon="DarkTheme24" />
</ui:NavigationStore.Footer>
<ui:NavigationStore.HiddenItems>
<ui:NavigationItem Content="Page1" PageType="{x:Type breadcrumbDemo:Page1}" />
<ui:NavigationItem Content="Page2" PageType="{x:Type breadcrumbDemo:Page2}" />
<ui:NavigationItem Content="Page3" PageType="{x:Type breadcrumbDemo:Page3}" />
<ui:NavigationItem Content="The cake is a lie!" PageType="{x:Type pages:TMPage}" />
</ui:NavigationStore.HiddenItems>
</ui:NavigationStore>

<!-- We display our pages inside this element. -->
Expand Down Expand Up @@ -198,8 +205,8 @@
ForceShutdown="False"
Icon="pack://application:,,,/Resources/wpfui.png"
MinimizeToTray="False"
ShowHelp="False"
ShowClose="True"
ShowHelp="False"
ShowMaximize="True"
ShowMinimize="True"
UseSnapLayout="True">
Expand Down Expand Up @@ -237,5 +244,10 @@
</ui:NotifyIcon>
</ui:TitleBar.Tray>
</ui:TitleBar>

<!--<ui:NavigationBackButton
Grid.Row="0"
Margin="5,5,0,4"
Navigation="{Binding ElementName=RootNavigation, Mode=OneTime}" />-->
</Grid>
</ui:UiWindow>
40 changes: 18 additions & 22 deletions src/Wpf.Ui.Demo/Views/Container.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
// All Rights Reserved.

using System;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
Expand Down Expand Up @@ -96,21 +97,25 @@ public Frame GetFrame()
public INavigation GetNavigation()
=> RootNavigation;

public bool Navigate(Type pageType)
=> RootNavigation.Navigate(pageType);
public void NavigateTo(Type type, object dataContext = null)
=> RootNavigation.NavigateTo(type, dataContext);

public void NavigateTo(string pageTag, object dataContext = null)
=> RootNavigation.NavigateTo(pageTag, dataContext);

public void SetPageService(IPageService pageService)
=> RootNavigation.PageService = pageService;
=> RootNavigation.SetIPageService(pageService);

public void ShowWindow()
=> Show();

public void CloseWindow()
=> Close();


#endregion INavigationWindow methods

private void InvokeSplashScreen()
private async void InvokeSplashScreen()
{
if (_initialized)
return;
Expand All @@ -122,24 +127,16 @@ private void InvokeSplashScreen()

_taskBarService.SetState(this, TaskBarProgressState.Indeterminate);

Task.Run(async () =>
{
// Remember to always include Delays and Sleeps in
// your applications to be able to charge the client for optimizations later.
await Task.Delay(4000);
// Remember to always include Delays and Sleeps in
// your applications to be able to charge the client for optimizations later.
await Task.Delay(4000);

await Dispatcher.InvokeAsync(() =>
{
RootWelcomeGrid.Visibility = Visibility.Hidden;
RootMainGrid.Visibility = Visibility.Visible;
RootWelcomeGrid.Visibility = Visibility.Hidden;
RootMainGrid.Visibility = Visibility.Visible;

Navigate(typeof(Pages.Dashboard));
NavigateTo(typeof(Pages.Dashboard));

_taskBarService.SetState(this, TaskBarProgressState.None);
});

return true;
});
_taskBarService.SetState(this, TaskBarProgressState.None);
}

private void NavigationButtonTheme_OnClick(object sender, RoutedEventArgs e)
Expand All @@ -157,16 +154,15 @@ private void TrayMenuItem_OnClick(object sender, RoutedEventArgs e)

private void RootNavigation_OnNavigated(INavigation sender, RoutedNavigationEventArgs e)
{
System.Diagnostics.Debug.WriteLine($"DEBUG | WPF UI Navigated to: {sender?.Current ?? null}", "Wpf.Ui.Demo");
System.Diagnostics.Debug.WriteLine($"DEBUG | WPF UI Navigated to: {e.NavigatedTo}", "Wpf.Ui.Demo");

// This funky solution allows us to impose a negative
// margin for Frame only for the Dashboard page, thanks
// to which the banner will cover the entire page nicely.
RootFrame.Margin = new Thickness(
left: 0,
top: sender?.Current?.PageTag == "dashboard" ? -69 : 0,
top: e.NavigatedTo.PageTag == "dashboard" ? -69 : 0,
right: 0,
bottom: 0);
}
}

25 changes: 25 additions & 0 deletions src/Wpf.Ui.Demo/Views/Pages/BreadcrumbDemo/Page1.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<Page
x:Class="Wpf.Ui.Demo.Views.Pages.BreadcrumbDemo.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
xmlns:viewModels="clr-namespace:Wpf.Ui.Demo.ViewModels"
Title="Page1"
Margin="18,18,18,0"
d:DataContext="{d:DesignInstance viewModels:BreadcrumbPagesViewModel}"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">

<StackPanel>
<ui:CardAction Command="{Binding Path=OnClickCommand}" CommandParameter="page2">
<TextBlock Text="Navigate to the second page" />
</ui:CardAction>

<ui:CardAction Margin="0,10,0,0" Command="{Binding Path=OnNavigateBackCommand}">
<TextBlock Text="Go back" />
</ui:CardAction>
</StackPanel>
</Page>
11 changes: 11 additions & 0 deletions src/Wpf.Ui.Demo/Views/Pages/BreadcrumbDemo/Page1.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System.Windows.Controls;

namespace Wpf.Ui.Demo.Views.Pages.BreadcrumbDemo;

public partial class Page1 : Page
{
public Page1()
{
InitializeComponent();
}
}
25 changes: 25 additions & 0 deletions src/Wpf.Ui.Demo/Views/Pages/BreadcrumbDemo/Page2.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<Page
x:Class="Wpf.Ui.Demo.Views.Pages.BreadcrumbDemo.Page2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
xmlns:viewModels="clr-namespace:Wpf.Ui.Demo.ViewModels"
Title="Page2"
Margin="18,18,18,0"
d:DataContext="{d:DesignInstance viewModels:BreadcrumbPagesViewModel}"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">

<StackPanel>
<ui:CardAction Command="{Binding Path=OnClickCommand}" CommandParameter="page3">
<TextBlock Text="Navigate to the third page" />
</ui:CardAction>

<ui:CardAction Margin="0,10,0,0" Command="{Binding Path=OnNavigateBackCommand}">
<TextBlock Text="Go back" />
</ui:CardAction>
</StackPanel>
</Page>
11 changes: 11 additions & 0 deletions src/Wpf.Ui.Demo/Views/Pages/BreadcrumbDemo/Page2.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System.Windows.Controls;

namespace Wpf.Ui.Demo.Views.Pages.BreadcrumbDemo;

public partial class Page2 : Page
{
public Page2()
{
InitializeComponent();
}
}
25 changes: 25 additions & 0 deletions src/Wpf.Ui.Demo/Views/Pages/BreadcrumbDemo/Page3.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<Page
x:Class="Wpf.Ui.Demo.Views.Pages.BreadcrumbDemo.Page3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
xmlns:viewModels="clr-namespace:Wpf.Ui.Demo.ViewModels"
Title="Page3"
Margin="18,18,18,0"
d:DataContext="{d:DesignInstance viewModels:BreadcrumbPagesViewModel}"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">

<StackPanel>
<ui:CardAction Command="{Binding Path=OnClickCommand}" CommandParameter="the cake is a lie!">
<TextBlock Text="Navigate to last page" />
</ui:CardAction>

<ui:CardAction Margin="0,10,0,0" Command="{Binding Path=OnNavigateBackCommand}">
<TextBlock Text="Go back" />
</ui:CardAction>
</StackPanel>
</Page>
11 changes: 11 additions & 0 deletions src/Wpf.Ui.Demo/Views/Pages/BreadcrumbDemo/Page3.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System.Windows.Controls;

namespace Wpf.Ui.Demo.Views.Pages.BreadcrumbDemo;

public partial class Page3 : Page
{
public Page3()
{
InitializeComponent();
}
}
19 changes: 18 additions & 1 deletion src/Wpf.Ui.Demo/Views/Pages/Controls.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>

<ui:CardAction
Expand Down Expand Up @@ -69,7 +70,7 @@

<ui:CardAction
Grid.Column="2"
Margin="4,0,0,0"
Margin="4,0,4,0"
Click="ButtonAction_OnClick"
Icon="CommentMultiple24"
Tag="messagebox">
Expand All @@ -84,6 +85,22 @@
Text="Opens the MessageBox." />
</StackPanel>
</ui:CardAction>

<ui:CardAction
Grid.Column="3"
Margin="4,0,0,0"
Click="OnBreadcrumbButtonClick">
<StackPanel>
<TextBlock
FontSize="13"
FontWeight="Medium"
Text="Breadcrumb demo" />
<TextBlock
FontSize="12"
Foreground="{DynamicResource TextFillColorTertiaryBrush}"
Text="Try breadcrumbs." />
</StackPanel>
</ui:CardAction>
</Grid>

<TextBlock
Expand Down
Loading