Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
16 changes: 16 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<Project>
<PropertyGroup>
<!-- Enable central package management, https://learn.microsoft.com/en-us/nuget/consume-packages/Central-Package-Management -->
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Avalonia" Version="11.2.8" />
<PackageVersion Include="Avalonia.Desktop" Version="11.2.8" />
<PackageVersion Include="Avalonia.Diagnostics" Version="11.2.8" />
<PackageVersion Include="Avalonia.ReactiveUI" Version="11.2.8" />
<PackageVersion Include="Avalonia.Themes.Fluent" Version="11.2.8" />
<PackageVersion Include="Prism.Avalonia" Version="9.0.537.11130" />
<PackageVersion Include="Prism.DryIoc.Avalonia" Version="9.0.537.11130" />
<PackageVersion Include="Prism.Core" Version="9.0.537" />
</ItemGroup>
</Project>
3 changes: 2 additions & 1 deletion Outlookish.sln
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion SampleApp.Services/SampleApp.Services.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
Expand Down
10 changes: 7 additions & 3 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -220,15 +220,19 @@ where T : AppBuilderBase<T>, 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
10 changes: 5 additions & 5 deletions source/SampleApp.Common/SampleApp.Common.csproj
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net9.0</TargetFramework>
<BaseOutputPath>..\..\output</BaseOutputPath>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.21" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.21" />
<PackageReference Include="Prism.Avalonia" Version="8.1.97.1021" />
<PackageReference Include="Prism.DryIoc.Avalonia" Version="8.1.97.1021" />
<PackageReference Include="Avalonia" />
<PackageReference Include="Avalonia.ReactiveUI" />
<PackageReference Include="Prism.Avalonia" />
<PackageReference Include="Prism.DryIoc.Avalonia" />
</ItemGroup>

</Project>
23 changes: 13 additions & 10 deletions source/SampleApp.Common/TabControlAdapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using System.Collections.Specialized;
using System.Linq;
using Avalonia.Controls;
using Prism.Regions;
using Prism.Navigation.Regions;

namespace SampleApp.Common;

Expand Down Expand Up @@ -57,23 +57,26 @@ protected override void Adapt(IRegion region, TabControl regionTarget)
{
foreach (UserControl item in e.NewItems)
{
var items = regionTarget.Items.Cast<TabItem>().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<TabItem>().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)
{
foreach (UserControl item in e.OldItems)
{
var tabToDelete = regionTarget.Items.OfType<TabItem>().FirstOrDefault(n => n.Content == item);
// regionTarget.Items.Remove(tabToDelete); // WPF

var items = regionTarget.Items.Cast<TabItem>().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<TabItem>().ToList();
// items.Remove(tabToDelete);
// regionTarget.Items = items; // Avalonia v0.10
//regionTarget.ItemsSource = items; // Avalonia v11
}
}
};
Expand Down
2 changes: 1 addition & 1 deletion source/SampleApp.Common/ViewModelBase.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Prism.Mvvm;
using Prism.Regions;
using Prism.Navigation.Regions;

namespace SampleApp.Common
{
Expand Down
20 changes: 10 additions & 10 deletions source/SampleApp.Main/App.axaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<prism:PrismApplication xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SampleApp"
xmlns:prism="http://prismlibrary.com/"
x:Class="SampleApp.App">
<Application xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SampleApp"
x:Class="SampleApp.App"
RequestedThemeVariant="Default">

<prism:PrismApplication.Styles>
<FluentTheme Mode="Light" />
<!--<FluentTheme Mode="Dark" />-->
</prism:PrismApplication.Styles>
</prism:PrismApplication>
<Application.Styles>
<!--<FluentTheme Mode="Dark" />-->
<FluentTheme />
</Application.Styles>
</Application>
8 changes: 4 additions & 4 deletions source/SampleApp.Main/App.axaml.cs
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -45,7 +45,7 @@ protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings reg
regionAdapterMappings.RegisterMapping(typeof(TabControl), Container.Resolve<TabControlAdapter>());
}

protected override IAvaloniaObject CreateShell()
protected override AvaloniaObject CreateShell()
{
return this.Container.Resolve<MainWindow>();
}
Expand Down Expand Up @@ -75,4 +75,4 @@ protected override void RegisterTypes(IContainerRegistry containerRegistry)
containerRegistry.RegisterForNavigation<DashboardView, DashboardViewModel>();
containerRegistry.RegisterForNavigation<SettingsView, SettingsViewModel>();
}
}
}
11 changes: 6 additions & 5 deletions source/SampleApp.Main/Core/RegionAdapters/GridRegionAdapter.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Avalonia.Controls;
using Prism.Regions;
using Avalonia.Controls;
using Prism.Navigation.Regions;

namespace SampleApp.Main.Core.RegionAdapters
{
Expand All @@ -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);
}
Expand All @@ -33,4 +34,4 @@ protected override void Adapt(IRegion region, Grid regionTarget)

protected override IRegion CreateRegion() => new SingleActiveRegion() { };
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Avalonia.Controls;
using Prism.Regions;
using Avalonia.Controls;
using Prism.Navigation.Regions;

namespace SampleApp.Main.Core.RegionAdapters
{
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -36,4 +36,4 @@ protected override void Adapt(IRegion region, StackPanel regionTarget)

protected override IRegion CreateRegion() => new SingleActiveRegion() { };
}
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
4 changes: 0 additions & 4 deletions source/SampleApp.Main/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,6 @@ public static AppBuilder BuildAvaloniaApp() => AppBuilder
EnableMultiTouch = false,
UseDBusMenu = true
})
.With(new Win32PlatformOptions {
EnableMultitouch = true,
AllowEglInitialization = true
})
.UseSkia()
.UseReactiveUI()
.LogToTrace();
Expand Down
15 changes: 8 additions & 7 deletions source/SampleApp.Main/SampleApp.csproj
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<Folder Include="Models\" />
<AvaloniaResource Include="Assets\**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.21" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.21" />
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.21" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.21" />
<PackageReference Include="Prism.Avalonia" Version="8.1.97.1021" />
<PackageReference Include="Prism.Core" Version="8.1.97" />
<PackageReference Include="Avalonia" />
<PackageReference Include="Avalonia.Desktop" />
<PackageReference Include="Avalonia.Diagnostics" />
<PackageReference Include="Avalonia.ReactiveUI" />
<PackageReference Include="Avalonia.Themes.Fluent" />
<PackageReference Include="Prism.Avalonia" />
<PackageReference Include="Prism.Core" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SampleApp.Common\SampleApp.Common.csproj" />
Expand Down
4 changes: 2 additions & 2 deletions source/SampleApp.Main/ViewModels/DashboardViewModel.cs
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
3 changes: 2 additions & 1 deletion source/SampleApp.Main/ViewModels/MainWindowViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 3 additions & 3 deletions source/SampleApp.Main/ViewModels/MessageBoxViewModel.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using Prism.Dialogs;

namespace SampleApp.ViewModels;

Expand All @@ -20,7 +20,7 @@ public MessageBoxViewModel()
MaxWidth = 600;
}

public event Action<IDialogResult>? RequestClose;
public DialogCloseListener RequestClose { get; }

public DelegateCommand<string> CmdResult => new((string buttonResult) =>
{
Expand Down Expand Up @@ -69,6 +69,6 @@ public void OnDialogOpened(IDialogParameters parameters)

public virtual void RaiseRequestClose(IDialogResult dialogResult)
{
RequestClose?.Invoke(dialogResult);
RequestClose.Invoke(dialogResult);
}
}
2 changes: 1 addition & 1 deletion source/SampleApp.Main/ViewModels/SettingsViewModel.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Prism.Regions;
using Prism.Navigation.Regions;
using SampleApp.Common;

namespace SampleApp.ViewModels;
Expand Down
6 changes: 3 additions & 3 deletions source/SampleApp.Modules.Calendar/CalendarModule.cs
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -18,4 +18,4 @@ public void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>library</OutputType>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<BaseOutputPath>..\..\output</BaseOutputPath>
</PropertyGroup>
Expand All @@ -15,11 +15,11 @@
<None Remove="Models\**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.21" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.21" />
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.21" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.21" />
<PackageReference Include="Prism.Avalonia" Version="8.1.97.1021" />
<PackageReference Include="Avalonia" />
<PackageReference Include="Avalonia.Desktop" />
<PackageReference Include="Avalonia.Diagnostics" />
<PackageReference Include="Avalonia.ReactiveUI" />
<PackageReference Include="Prism.Avalonia" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SampleApp.Common\SampleApp.Common.csproj" />
Expand Down
Loading