This commit is contained in:
TheXamlGuy
2024-07-01 18:13:36 +01:00
parent 19c35a72d3
commit 28791c8c70
14 changed files with 64 additions and 33 deletions
+10
View File
@@ -6,6 +6,7 @@
xmlns:vm="using:Wallet" xmlns:vm="using:Wallet"
x:DataType="vm:MainViewModel"> x:DataType="vm:MainViewModel">
<NavigationView <NavigationView
x:Name="NavigationView"
FooterMenuItemsSource="{Binding Footer}" FooterMenuItemsSource="{Binding Footer}"
IsSettingsVisible="False" IsSettingsVisible="False"
MenuItemTemplate="{Binding Template}" MenuItemTemplate="{Binding Template}"
@@ -33,6 +34,7 @@
<NavigationView.PaneCustomContent> <NavigationView.PaneCustomContent>
<Grid RowDefinitions="*,Auto"> <Grid RowDefinitions="*,Auto">
<ListBox <ListBox
x:Name="ListBox"
Grid.Row="0" Grid.Row="0"
Margin="1,2,1,0" Margin="1,2,1,0"
HorizontalAlignment="Center" HorizontalAlignment="Center"
@@ -167,6 +169,14 @@
</StackPanel> </StackPanel>
</ItemsPanelTemplate> </ItemsPanelTemplate>
</ListBox.ItemsPanel> </ListBox.ItemsPanel>
<Interaction.Behaviors>
<DataTriggerBehavior Binding="{Binding $parent[NavigationView].SelectedItem, Converter={NamedTypeConverter}}" Value="ManageNavigationViewModel">
<ChangePropertyAction
PropertyName="SelectedItem"
TargetObject="{Binding #ListBox}"
Value="{x:Null}" />
</DataTriggerBehavior>
</Interaction.Behaviors>
</ListBox> </ListBox>
<NavigationViewItemSeparator Grid.Row="1" /> <NavigationViewItemSeparator Grid.Row="1" />
</Grid> </Grid>
+4 -1
View File
@@ -4,5 +4,8 @@ namespace Wallet.Avalonia;
public partial class MainView : UserControl public partial class MainView : UserControl
{ {
public MainView() => InitializeComponent(); public MainView()
{
InitializeComponent();
}
} }
+7 -3
View File
@@ -2,11 +2,15 @@
x:Class="Wallet.Avalonia.ManageNavigationView" x:Class="Wallet.Avalonia.ManageNavigationView"
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Content="Manage Wallets"> xmlns:vm="using:Wallet"
x:DataType="vm:ManageNavigationViewModel"
Content="Manage Wallets"
IsSelected="{Binding IsSelected}"
NavigationViewExtension.IsItemInvokedEnabled="True">
<Interaction.Behaviors> <Interaction.Behaviors>
<EventTriggerBehavior EventName="Tapped"> <AttachedEventTriggerBehaviour RoutedEvent="{x:Static NavigationViewExtension.ItemInvokedEvent}">
<NavigateAction Region="Main" Route="Manage" /> <NavigateAction Region="Main" Route="Manage" />
</EventTriggerBehavior> </AttachedEventTriggerBehaviour>
</Interaction.Behaviors> </Interaction.Behaviors>
<NavigationViewItem.IconSource> <NavigationViewItem.IconSource>
<PathIconSource Data="M692.224,655.36C684.032,655.36 677.547,657.749 672.768,662.528C667.989,667.307 665.6,673.451 665.6,680.96C665.6,688.469 667.989,694.613 672.768,699.392C677.547,704.171 683.349,706.56 690.176,706.56L743.424,706.56C750.251,706.56 756.053,704.171 760.832,699.392C765.611,694.613 768,688.469 768,680.96C768,673.451 765.611,667.307 760.832,662.528C756.053,657.749 750.251,655.36 743.424,655.36ZM153.6,321.536C153.6,301.056 161.109,283.307 176.128,268.288C191.147,253.269 209.579,245.76 231.424,245.76L716.8,245.76C745.472,245.76 769.707,255.659 789.504,275.456C809.301,295.253 819.2,319.488 819.2,348.16L819.2,362.496C835.584,370.688 848.213,382.976 857.088,399.36C865.963,415.744 870.4,432.811 870.4,450.56L870.4,860.16C870.4,888.832 860.501,913.067 840.704,932.864C820.907,952.661 796.672,962.56 768,962.56L282.624,962.56C247.125,962.56 216.747,949.931 191.488,924.672C166.229,899.413 153.6,869.717 153.6,835.584ZM716.8,296.96L231.424,296.96C223.232,296.96 216.747,299.349 211.968,304.128C207.189,308.907 204.8,315.051 204.8,322.56C204.8,330.069 207.189,336.213 211.968,340.992C216.747,345.771 223.232,348.16 231.424,348.16L768,348.16C768,334.507 762.88,322.56 752.64,312.32C742.4,302.08 730.453,296.96 716.8,296.96ZM231.424,399.36C221.867,399.36 212.992,397.995 204.8,395.264L204.8,833.536C204.8,855.381 212.309,873.813 227.328,888.832C242.347,903.851 260.779,911.36 282.624,911.36L768,911.36C781.653,911.36 793.6,906.24 803.84,896C814.08,885.76 819.2,873.813 819.2,860.16L819.2,450.56C819.2,436.907 814.08,424.96 803.84,414.72C793.6,404.48 781.653,399.36 768,399.36Z" /> <PathIconSource Data="M692.224,655.36C684.032,655.36 677.547,657.749 672.768,662.528C667.989,667.307 665.6,673.451 665.6,680.96C665.6,688.469 667.989,694.613 672.768,699.392C677.547,704.171 683.349,706.56 690.176,706.56L743.424,706.56C750.251,706.56 756.053,704.171 760.832,699.392C765.611,694.613 768,688.469 768,680.96C768,673.451 765.611,667.307 760.832,662.528C756.053,657.749 750.251,655.36 743.424,655.36ZM153.6,321.536C153.6,301.056 161.109,283.307 176.128,268.288C191.147,253.269 209.579,245.76 231.424,245.76L716.8,245.76C745.472,245.76 769.707,255.659 789.504,275.456C809.301,295.253 819.2,319.488 819.2,348.16L819.2,362.496C835.584,370.688 848.213,382.976 857.088,399.36C865.963,415.744 870.4,432.811 870.4,450.56L870.4,860.16C870.4,888.832 860.501,913.067 840.704,932.864C820.907,952.661 796.672,962.56 768,962.56L282.624,962.56C247.125,962.56 216.747,949.931 191.488,924.672C166.229,899.413 153.6,869.717 153.6,835.584ZM716.8,296.96L231.424,296.96C223.232,296.96 216.747,299.349 211.968,304.128C207.189,308.907 204.8,315.051 204.8,322.56C204.8,330.069 207.189,336.213 211.968,340.992C216.747,345.771 223.232,348.16 231.424,348.16L768,348.16C768,334.507 762.88,322.56 752.64,312.32C742.4,302.08 730.453,296.96 716.8,296.96ZM231.424,399.36C221.867,399.36 212.992,397.995 204.8,395.264L204.8,833.536C204.8,855.381 212.309,873.813 227.328,888.832C242.347,903.851 260.779,911.36 282.624,911.36L768,911.36C781.653,911.36 793.6,906.24 803.84,896C814.08,885.76 819.2,873.813 819.2,860.16L819.2,450.56C819.2,436.907 814.08,424.96 803.84,414.72C793.6,404.48 781.653,399.36 768,399.36Z" />
@@ -1,5 +1,4 @@
using Avalonia.Controls; using Avalonia.Controls;
using Toolkit.UI.Controls.Avalonia;
namespace Wallet.Avalonia; namespace Wallet.Avalonia;
+6 -11
View File
@@ -2,14 +2,9 @@
namespace Wallet; namespace Wallet;
public partial class IconViewModel : Observable public partial class IconViewModel(IServiceProvider provider,
{ IServiceFactory factory,
public IconViewModel(IServiceProvider provider, IMediator mediator,
IServiceFactory factory, IPublisher publisher,
IMediator mediator, ISubscriber subscriber,
IPublisher publisher, IDisposer disposer) : Observable(provider, factory, mediator, publisher, subscriber, disposer);
ISubscriber subscriber,
IDisposer disposer) : base(provider, factory, mediator, publisher, subscriber, disposer)
{
}
}
+2 -2
View File
@@ -16,13 +16,13 @@ public partial class ItemCategoryCollectionViewModel(IServiceProvider provider,
[ObservableProperty] [ObservableProperty]
private IContentTemplate template = template; private IContentTemplate template = template;
public override Task Activated() public override Task OnActivated()
{ {
Publisher.Publish(Notify.As(Factory.Create<WalletCommandHeaderCollection>(new List<IDisposable> Publisher.Publish(Notify.As(Factory.Create<WalletCommandHeaderCollection>(new List<IDisposable>
{ {
Factory.Create<BackActionViewModel>(), Factory.Create<BackActionViewModel>(),
}))); })));
return base.Activated(); return base.OnActivated();
} }
} }
+2 -2
View File
@@ -59,14 +59,14 @@ public partial class ItemCollectionViewModel :
return Task.CompletedTask; return Task.CompletedTask;
} }
public override Task Activated() public override Task OnActivated()
{ {
Publisher.Publish(Notify.As(Factory.Create<WalletCommandHeaderCollection>(new List<IDisposable> Publisher.Publish(Notify.As(Factory.Create<WalletCommandHeaderCollection>(new List<IDisposable>
{ {
Factory.Create<SearchWalletActionViewModel>(), Factory.Create<SearchWalletActionViewModel>(),
}))); })));
return base.Activated(); return base.OnActivated();
} }
protected override SynchronizeExpression BuildAggregateExpression() => protected override SynchronizeExpression BuildAggregateExpression() =>
+2 -2
View File
@@ -101,7 +101,7 @@ public partial class ItemViewModel :
return Task.CompletedTask; return Task.CompletedTask;
} }
public override Task Activated() public override Task OnActivated()
{ {
if (Archived) if (Archived)
{ {
@@ -132,7 +132,7 @@ public partial class ItemViewModel :
} }
} }
return base.Activated(); return base.OnActivated();
} }
protected override SynchronizeExpression BuildAggregateExpression() => protected override SynchronizeExpression BuildAggregateExpression() =>
+3 -1
View File
@@ -1,4 +1,6 @@
using CommunityToolkit.Mvvm.ComponentModel; using Avalonia.Xaml.Interactions.Core;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using Toolkit.Foundation; using Toolkit.Foundation;
namespace Wallet; namespace Wallet;
+8 -2
View File
@@ -1,4 +1,5 @@
using Toolkit.Foundation; using CommunityToolkit.Mvvm.ComponentModel;
using Toolkit.Foundation;
namespace Wallet; namespace Wallet;
@@ -9,4 +10,9 @@ public partial class ManageNavigationViewModel(IServiceProvider provider,
ISubscriber subscriber, ISubscriber subscriber,
IDisposer disposer) : IDisposer disposer) :
Observable(provider, factory, mediator, publisher, subscriber, disposer), Observable(provider, factory, mediator, publisher, subscriber, disposer),
IMainNavigationViewModel; IMainNavigationViewModel,
ISelectable
{
[ObservableProperty]
private bool isSelected;
}
+12
View File
@@ -49,4 +49,16 @@ public partial class OpenWalletViewModel : Observable
} }
} }
} }
public override async Task OnActivated()
{
Publisher.Publish(Activated.As<Wallet>());
await base.OnActivated();
}
public override async Task OnDeactivated()
{
Publisher.Publish(Deactivated.As<Wallet>());
await base.OnDeactivated();
}
} }
@@ -38,8 +38,8 @@ public class SynchronizeItemCollectionViewModelHandler(IMediator mediator,
Item<(Guid, string)> item = new((Id, Name)); Item<(Guid, string)> item = new((Id, Name));
decoratorService.Set(item); decoratorService.Set(item);
cache.Add(item); cache.Add(item);
publisher.Publish(Create.As(viewModel), nameof(ItemCollectionViewModel)); publisher.Publish(Create.As(viewModel), nameof(ItemCollectionViewModel));
} }
+1 -1
View File
@@ -56,10 +56,10 @@ public partial class WalletNavigationViewModel :
Add<FavouritesNavigationViewModel>("Favourites", 0); Add<FavouritesNavigationViewModel>("Favourites", 0);
Add<ArchiveNavigationViewModel>("Archive", 0); Add<ArchiveNavigationViewModel>("Archive", 0);
Add<CategoriesNavigationViewModel>("Categories", 0); Add<CategoriesNavigationViewModel>("Categories", 0);
IsOpened = true;
Publisher.Publish(Changed.As<Item>()); Publisher.Publish(Changed.As<Item>());
IsOpened = true;
return Task.CompletedTask; return Task.CompletedTask;
} }
+6 -6
View File
@@ -25,15 +25,15 @@ public partial class WalletViewModel :
Filter = filter; Filter = filter;
} }
public override async Task Activated() public override async Task OnActivated()
{ {
Publisher.Publish(Toolkit.Foundation.Activated.As<Wallet>()); Publisher.Publish(Activated.As<Wallet>());
await base.Activated(); await base.OnActivated();
} }
public override async Task Deactivated() public override async Task OnDeactivated()
{ {
Publisher.Publish(Toolkit.Foundation.Deactivated.As<Wallet>()); Publisher.Publish(Deactivated.As<Wallet>());
await base.Deactivated(); await base.OnDeactivated();
} }
} }