diff --git a/Directory.Packages.props b/Directory.Packages.props
new file mode 100644
index 0000000..5d3da4a
--- /dev/null
+++ b/Directory.Packages.props
@@ -0,0 +1,16 @@
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Outlookish.sln b/Outlookish.sln
index 8622348..ee42685 100644
--- a/Outlookish.sln
+++ b/Outlookish.sln
@@ -21,10 +21,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
CodeMaid.config = CodeMaid.config
+ Directory.Packages.props = Directory.Packages.props
readme.md = readme.md
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleApp.Services", "SampleApp.Services\SampleApp.Services.csproj", "{1AFDDD2F-2AF5-4BF3-AE04-89A23B2991D3}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleApp.Services", "SampleApp.Services\SampleApp.Services.csproj", "{1AFDDD2F-2AF5-4BF3-AE04-89A23B2991D3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/SampleApp.Services/SampleApp.Services.csproj b/SampleApp.Services/SampleApp.Services.csproj
index 23fe4a7..ff8a1be 100644
--- a/SampleApp.Services/SampleApp.Services.csproj
+++ b/SampleApp.Services/SampleApp.Services.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net9.0
enable
enable
diff --git a/readme.md b/readme.md
index 0e64cc6..41536b8 100644
--- a/readme.md
+++ b/readme.md
@@ -220,15 +220,19 @@ where T : AppBuilderBase, new()
}
```
-The same way the avalonia framework gives us the possibility to use specific UI mechanism based on the detected platform.
+The same way the Avalonia framework allows us to use specific UI mechanisms based on the detected platform.
-## Future Considerations
+## Upcoming Releases
+
+* Upgrade to Avalonia v11.1 with Prism v9.0-pre
+
+### Future Considerations
* Demonstrate page navigation with parameters - _use a `MockEmails` class to pass in EmailId and `OnNavigatedTo()` get email from `MailService`_
* Include successful navigation
* Include failed navigation (i.e. invalid EmailId)
* Use Prism's 'Navigation Journaling
-* Populate footer using Prism Events
+* Populate the footer using Prism Events
* Add icon glyphs via Styles
* Sidebar Panel - Simple sidebar with stages
* Flyout menu - Alternative sidebar using Grids
diff --git a/source/SampleApp.Common/SampleApp.Common.csproj b/source/SampleApp.Common/SampleApp.Common.csproj
index 7dd0a84..5c21f67 100644
--- a/source/SampleApp.Common/SampleApp.Common.csproj
+++ b/source/SampleApp.Common/SampleApp.Common.csproj
@@ -1,15 +1,15 @@
- net6.0
+ net9.0
..\..\output
-
-
-
-
+
+
+
+
diff --git a/source/SampleApp.Common/TabControlAdapter.cs b/source/SampleApp.Common/TabControlAdapter.cs
index 02c9187..d48e637 100644
--- a/source/SampleApp.Common/TabControlAdapter.cs
+++ b/source/SampleApp.Common/TabControlAdapter.cs
@@ -2,7 +2,7 @@
using System.Collections.Specialized;
using System.Linq;
using Avalonia.Controls;
-using Prism.Regions;
+using Prism.Navigation.Regions;
namespace SampleApp.Common;
@@ -57,10 +57,12 @@ protected override void Adapt(IRegion region, TabControl regionTarget)
{
foreach (UserControl item in e.NewItems)
{
- var items = regionTarget.Items.Cast().ToList();
- items.Add(new TabItem { Header = item.Tag, Content = item });
- regionTarget.Items = items; // Avalonia v0.10.x
- //// regionTarget.Items.Set(items); // Avalonia v11
+ //var items = regionTarget.Items.Cast().ToList();
+ // items.Add(new TabItem { Header = item.Tag, Content = item });
+ // regionTarget.Items = items; // Avalonia v0.10.x
+ regionTarget.Items.Add(new TabItem { Header = item.Tag, Content = item });
+
+ //regionTarget.ItemsSource = items; // Avalonia v11.0
}
}
else if (e.Action == NotifyCollectionChangedAction.Remove)
@@ -68,12 +70,13 @@ protected override void Adapt(IRegion region, TabControl regionTarget)
foreach (UserControl item in e.OldItems)
{
var tabToDelete = regionTarget.Items.OfType().FirstOrDefault(n => n.Content == item);
- // regionTarget.Items.Remove(tabToDelete); // WPF
- var items = regionTarget.Items.Cast().ToList();
- items.Remove(tabToDelete);
- regionTarget.Items = items;
- //// regionTarget.Items.Set(items); // Avalonia v11
+ regionTarget.Items.Remove(tabToDelete);
+ // regionTarget.Items.Remove(tabToDelete); // WPF
+ //var items = regionTarget.Items.Cast().ToList();
+ // items.Remove(tabToDelete);
+ // regionTarget.Items = items; // Avalonia v0.10
+ //regionTarget.ItemsSource = items; // Avalonia v11
}
}
};
diff --git a/source/SampleApp.Common/ViewModelBase.cs b/source/SampleApp.Common/ViewModelBase.cs
index 3c9f7ec..fe6d01b 100644
--- a/source/SampleApp.Common/ViewModelBase.cs
+++ b/source/SampleApp.Common/ViewModelBase.cs
@@ -1,5 +1,5 @@
using Prism.Mvvm;
-using Prism.Regions;
+using Prism.Navigation.Regions;
namespace SampleApp.Common
{
diff --git a/source/SampleApp.Main/App.axaml b/source/SampleApp.Main/App.axaml
index fbc31a6..a9b7285 100644
--- a/source/SampleApp.Main/App.axaml
+++ b/source/SampleApp.Main/App.axaml
@@ -1,11 +1,11 @@
-
+
-
-
-
-
-
+
+
+
+
+
diff --git a/source/SampleApp.Main/App.axaml.cs b/source/SampleApp.Main/App.axaml.cs
index d939603..7c2be85 100644
--- a/source/SampleApp.Main/App.axaml.cs
+++ b/source/SampleApp.Main/App.axaml.cs
@@ -1,9 +1,9 @@
-using Avalonia;
+using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Prism.Ioc;
using Prism.Modularity;
-using Prism.Regions;
+using Prism.Navigation.Regions;
using Prism.DryIoc;
using SampleApp.Common;
using SampleApp.Main.Core.RegionAdapters;
@@ -45,7 +45,7 @@ protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings reg
regionAdapterMappings.RegisterMapping(typeof(TabControl), Container.Resolve());
}
- protected override IAvaloniaObject CreateShell()
+ protected override AvaloniaObject CreateShell()
{
return this.Container.Resolve();
}
@@ -75,4 +75,4 @@ protected override void RegisterTypes(IContainerRegistry containerRegistry)
containerRegistry.RegisterForNavigation();
containerRegistry.RegisterForNavigation();
}
-}
\ No newline at end of file
+}
diff --git a/source/SampleApp.Main/Core/RegionAdapters/GridRegionAdapter.cs b/source/SampleApp.Main/Core/RegionAdapters/GridRegionAdapter.cs
index 4c80819..f265c32 100644
--- a/source/SampleApp.Main/Core/RegionAdapters/GridRegionAdapter.cs
+++ b/source/SampleApp.Main/Core/RegionAdapters/GridRegionAdapter.cs
@@ -1,5 +1,5 @@
-using Avalonia.Controls;
-using Prism.Regions;
+using Avalonia.Controls;
+using Prism.Navigation.Regions;
namespace SampleApp.Main.Core.RegionAdapters
{
@@ -16,14 +16,15 @@ protected override void Adapt(IRegion region, Grid regionTarget)
{
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
- foreach (IControl item in e.NewItems)
+ foreach (Control item in e.NewItems)
{
regionTarget.Children.Add(item);
}
}
+
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove)
{
- foreach (IControl item in e.OldItems)
+ foreach (Control item in e.OldItems)
{
regionTarget.Children.Remove(item);
}
@@ -33,4 +34,4 @@ protected override void Adapt(IRegion region, Grid regionTarget)
protected override IRegion CreateRegion() => new SingleActiveRegion() { };
}
-}
\ No newline at end of file
+}
diff --git a/source/SampleApp.Main/Core/RegionAdapters/StackPanelRegionAdapter.cs b/source/SampleApp.Main/Core/RegionAdapters/StackPanelRegionAdapter.cs
index 6e5eb7c..c584ff8 100644
--- a/source/SampleApp.Main/Core/RegionAdapters/StackPanelRegionAdapter.cs
+++ b/source/SampleApp.Main/Core/RegionAdapters/StackPanelRegionAdapter.cs
@@ -1,5 +1,5 @@
-using Avalonia.Controls;
-using Prism.Regions;
+using Avalonia.Controls;
+using Prism.Navigation.Regions;
namespace SampleApp.Main.Core.RegionAdapters
{
@@ -16,7 +16,7 @@ protected override void Adapt(IRegion region, StackPanel regionTarget)
{
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
- foreach (IControl item in e.NewItems)
+ foreach (Control item in e.NewItems)
{
if (e.NewItems != null)
regionTarget.Children.Add(item);
@@ -25,7 +25,7 @@ protected override void Adapt(IRegion region, StackPanel regionTarget)
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove)
{
- foreach (IControl item in e.OldItems)
+ foreach (Control item in e.OldItems)
{
if (e.OldItems != null)
regionTarget.Children.Remove(item);
@@ -36,4 +36,4 @@ protected override void Adapt(IRegion region, StackPanel regionTarget)
protected override IRegion CreateRegion() => new SingleActiveRegion() { };
}
-}
\ No newline at end of file
+}
diff --git a/source/SampleApp.Main/Modules/SampleFooter/SampleFooterModule.cs b/source/SampleApp.Main/Modules/SampleFooter/SampleFooterModule.cs
index 6e41155..67f212d 100644
--- a/source/SampleApp.Main/Modules/SampleFooter/SampleFooterModule.cs
+++ b/source/SampleApp.Main/Modules/SampleFooter/SampleFooterModule.cs
@@ -1,6 +1,6 @@
using Prism.Ioc;
using Prism.Modularity;
-using Prism.Regions;
+using Prism.Navigation.Regions;
using SampleApp.Common;
using SampleApp.Modules.SampleFooter.ViewModels;
using SampleApp.Modules.SampleFooter.Views;
diff --git a/source/SampleApp.Main/Program.cs b/source/SampleApp.Main/Program.cs
index c291f08..3cd10a0 100644
--- a/source/SampleApp.Main/Program.cs
+++ b/source/SampleApp.Main/Program.cs
@@ -13,10 +13,6 @@ public static AppBuilder BuildAvaloniaApp() => AppBuilder
EnableMultiTouch = false,
UseDBusMenu = true
})
- .With(new Win32PlatformOptions {
- EnableMultitouch = true,
- AllowEglInitialization = true
- })
.UseSkia()
.UseReactiveUI()
.LogToTrace();
diff --git a/source/SampleApp.Main/SampleApp.csproj b/source/SampleApp.Main/SampleApp.csproj
index 78444d2..abe3c28 100644
--- a/source/SampleApp.Main/SampleApp.csproj
+++ b/source/SampleApp.Main/SampleApp.csproj
@@ -1,7 +1,7 @@
WinExe
- net6.0
+ net9.0
enable
@@ -9,12 +9,13 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/source/SampleApp.Main/ViewModels/DashboardViewModel.cs b/source/SampleApp.Main/ViewModels/DashboardViewModel.cs
index d31a6d2..443d89f 100644
--- a/source/SampleApp.Main/ViewModels/DashboardViewModel.cs
+++ b/source/SampleApp.Main/ViewModels/DashboardViewModel.cs
@@ -1,6 +1,6 @@
using Prism.Commands;
-using Prism.Regions;
-using Prism.Services.Dialogs;
+using Prism.Dialogs;
+using Prism.Navigation.Regions;
using SampleApp.Common;
using SampleApp.Services;
using SampleApp.Views;
diff --git a/source/SampleApp.Main/ViewModels/MainWindowViewModel.cs b/source/SampleApp.Main/ViewModels/MainWindowViewModel.cs
index 310db4a..85ff98b 100644
--- a/source/SampleApp.Main/ViewModels/MainWindowViewModel.cs
+++ b/source/SampleApp.Main/ViewModels/MainWindowViewModel.cs
@@ -2,7 +2,8 @@
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Prism.Commands;
-using Prism.Services.Dialogs;
+//using Prism.Services.Dialogs;
+using Prism.Dialogs;
using SampleApp.Common;
using SampleApp.Views;
using MenuItem = SampleApp.Main.Models.MenuItem;
diff --git a/source/SampleApp.Main/ViewModels/MessageBoxViewModel.cs b/source/SampleApp.Main/ViewModels/MessageBoxViewModel.cs
index f106bc3..7f35d35 100644
--- a/source/SampleApp.Main/ViewModels/MessageBoxViewModel.cs
+++ b/source/SampleApp.Main/ViewModels/MessageBoxViewModel.cs
@@ -1,7 +1,7 @@
using System;
using Prism.Commands;
using Prism.Mvvm;
-using Prism.Services.Dialogs;
+using Prism.Dialogs;
namespace SampleApp.ViewModels;
@@ -20,7 +20,7 @@ public MessageBoxViewModel()
MaxWidth = 600;
}
- public event Action? RequestClose;
+ public DialogCloseListener RequestClose { get; }
public DelegateCommand CmdResult => new((string buttonResult) =>
{
@@ -69,6 +69,6 @@ public void OnDialogOpened(IDialogParameters parameters)
public virtual void RaiseRequestClose(IDialogResult dialogResult)
{
- RequestClose?.Invoke(dialogResult);
+ RequestClose.Invoke(dialogResult);
}
}
diff --git a/source/SampleApp.Main/ViewModels/SettingsViewModel.cs b/source/SampleApp.Main/ViewModels/SettingsViewModel.cs
index e5a5df5..0c4bd97 100644
--- a/source/SampleApp.Main/ViewModels/SettingsViewModel.cs
+++ b/source/SampleApp.Main/ViewModels/SettingsViewModel.cs
@@ -1,4 +1,4 @@
-using Prism.Regions;
+using Prism.Navigation.Regions;
using SampleApp.Common;
namespace SampleApp.ViewModels;
diff --git a/source/SampleApp.Modules.Calendar/CalendarModule.cs b/source/SampleApp.Modules.Calendar/CalendarModule.cs
index b6b91f7..cc6f7b7 100644
--- a/source/SampleApp.Modules.Calendar/CalendarModule.cs
+++ b/source/SampleApp.Modules.Calendar/CalendarModule.cs
@@ -1,6 +1,6 @@
-using Prism.Ioc;
+using Prism.Ioc;
using Prism.Modularity;
-using Prism.Regions;
+using Prism.Navigation.Regions;
using SampleApp.Common;
using SampleApp.Modules.Calendar.Views;
@@ -18,4 +18,4 @@ public void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
-}
\ No newline at end of file
+}
diff --git a/source/SampleApp.Modules.Calendar/SampleApp.Modules.Calendar.csproj b/source/SampleApp.Modules.Calendar/SampleApp.Modules.Calendar.csproj
index 78c37d1..8d1f203 100644
--- a/source/SampleApp.Modules.Calendar/SampleApp.Modules.Calendar.csproj
+++ b/source/SampleApp.Modules.Calendar/SampleApp.Modules.Calendar.csproj
@@ -1,7 +1,7 @@
library
- net6.0
+ net9.0
enable
..\..\output
@@ -15,11 +15,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/source/SampleApp.Modules.Calendar/Views/CalendarView.axaml b/source/SampleApp.Modules.Calendar/Views/CalendarView.axaml
index 36398f2..4fb4dc3 100644
--- a/source/SampleApp.Modules.Calendar/Views/CalendarView.axaml
+++ b/source/SampleApp.Modules.Calendar/Views/CalendarView.axaml
@@ -1,4 +1,4 @@
-
-
-
-
+
diff --git a/source/SampleApp.Modules.Contacts/ContactsModule.cs b/source/SampleApp.Modules.Contacts/ContactsModule.cs
index bb231ad..5257d80 100644
--- a/source/SampleApp.Modules.Contacts/ContactsModule.cs
+++ b/source/SampleApp.Modules.Contacts/ContactsModule.cs
@@ -1,6 +1,6 @@
-using Prism.Ioc;
+using Prism.Ioc;
using Prism.Modularity;
-using Prism.Regions;
+using Prism.Navigation.Regions;
using SampleApp.Common;
using SampleApp.Modules.Contacts.Views;
@@ -17,4 +17,4 @@ public void OnInitialized(IContainerProvider containerProvider)
public void RegisterTypes(IContainerRegistry containerRegistry)
{
}
-}
\ No newline at end of file
+}
diff --git a/source/SampleApp.Modules.Contacts/SampleApp.Modules.Contacts.csproj b/source/SampleApp.Modules.Contacts/SampleApp.Modules.Contacts.csproj
index 78c37d1..e229950 100644
--- a/source/SampleApp.Modules.Contacts/SampleApp.Modules.Contacts.csproj
+++ b/source/SampleApp.Modules.Contacts/SampleApp.Modules.Contacts.csproj
@@ -1,9 +1,10 @@
library
- net6.0
+ net9.0
enable
..\..\output
+ 11.0
@@ -15,11 +16,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/source/SampleApp.Modules.Mail/MailModule.cs b/source/SampleApp.Modules.Mail/MailModule.cs
index bb20a1a..3e5bf30 100644
--- a/source/SampleApp.Modules.Mail/MailModule.cs
+++ b/source/SampleApp.Modules.Mail/MailModule.cs
@@ -1,6 +1,6 @@
-using Prism.Ioc;
+using Prism.Ioc;
using Prism.Modularity;
-using Prism.Regions;
+using Prism.Navigation.Regions;
using SampleApp.Common;
using SampleApp.Modules.Mail.ViewModels;
using SampleApp.Modules.Mail.Views;
diff --git a/source/SampleApp.Modules.Mail/SampleApp.Modules.Mail.csproj b/source/SampleApp.Modules.Mail/SampleApp.Modules.Mail.csproj
index b841a4d..aa58445 100644
--- a/source/SampleApp.Modules.Mail/SampleApp.Modules.Mail.csproj
+++ b/source/SampleApp.Modules.Mail/SampleApp.Modules.Mail.csproj
@@ -1,19 +1,20 @@
library
- net6.0
+ net9.0
enable
..\..\output
+ 11.0
-
-
-
-
-
+
+
+
+
+
diff --git a/source/SampleApp.Modules.Mail/ViewModels/MailViewModel.cs b/source/SampleApp.Modules.Mail/ViewModels/MailViewModel.cs
index f23f907..e890a2f 100644
--- a/source/SampleApp.Modules.Mail/ViewModels/MailViewModel.cs
+++ b/source/SampleApp.Modules.Mail/ViewModels/MailViewModel.cs
@@ -1,6 +1,6 @@
using Avalonia.Controls;
using Prism.Commands;
-using Prism.Regions;
+using Prism.Navigation.Regions;
using SampleApp.Common;
using SampleApp.Services;
diff --git a/source/SampleApp.Modules.Mail/Views/MailFocusedView.axaml b/source/SampleApp.Modules.Mail/Views/MailFocusedView.axaml
index e1569a8..9c2393f 100644
--- a/source/SampleApp.Modules.Mail/Views/MailFocusedView.axaml
+++ b/source/SampleApp.Modules.Mail/Views/MailFocusedView.axaml
@@ -1,4 +1,4 @@
-
-
+ SelectionMode="Single" >
+
@@ -22,6 +22,6 @@
-
+
diff --git a/source/SampleApp.Modules.Mail/Views/MailFocusedView.axaml.cs b/source/SampleApp.Modules.Mail/Views/MailFocusedView.axaml.cs
index 9fd37fa..1e5e914 100644
--- a/source/SampleApp.Modules.Mail/Views/MailFocusedView.axaml.cs
+++ b/source/SampleApp.Modules.Mail/Views/MailFocusedView.axaml.cs
@@ -1,4 +1,4 @@
-using Avalonia.Controls;
+using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace SampleApp.Modules.Mail.Views;
diff --git a/source/SampleApp.Modules.Message/MessageModule.cs b/source/SampleApp.Modules.Message/MessageModule.cs
index e7defa0..b45aeab 100644
--- a/source/SampleApp.Modules.Message/MessageModule.cs
+++ b/source/SampleApp.Modules.Message/MessageModule.cs
@@ -1,6 +1,6 @@
-using Prism.Ioc;
+using Prism.Ioc;
using Prism.Modularity;
-using Prism.Regions;
+using Prism.Navigation.Regions;
using SampleApp.Common;
using SampleApp.Modules.Message.Views;
@@ -19,4 +19,4 @@ public void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
-}
\ No newline at end of file
+}
diff --git a/source/SampleApp.Modules.Message/SampleApp.Modules.Message.csproj b/source/SampleApp.Modules.Message/SampleApp.Modules.Message.csproj
index 78c37d1..8d1f203 100644
--- a/source/SampleApp.Modules.Message/SampleApp.Modules.Message.csproj
+++ b/source/SampleApp.Modules.Message/SampleApp.Modules.Message.csproj
@@ -1,7 +1,7 @@
library
- net6.0
+ net9.0
enable
..\..\output
@@ -15,11 +15,11 @@
-
-
-
-
-
+
+
+
+
+