This commit is contained in:
TheXamlGuy
2024-05-04 22:35:11 +01:00
parent 08cdbd9225
commit 5d75023384
12 changed files with 52 additions and 22 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
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"
xmlns:ui="using:FluentAvalonia.UI.Controls" xmlns:ui="using:FluentAvalonia.UI.Controls"
RequestedThemeVariant="Default"> RequestedThemeVariant="Dark">
<Application.Styles> <Application.Styles>
<ThemeResources /> <ThemeResources />
<Style Selector="ui|SettingsExpanderItem"> <Style Selector="ui|SettingsExpanderItem">
+6 -1
View File
@@ -7,12 +7,17 @@ using Microsoft.Extensions.Hosting;
using Toolkit.Avalonia; using Toolkit.Avalonia;
using Toolkit.Foundation; using Toolkit.Foundation;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using HotAvalonia;
namespace Bitvault.Avalonia; namespace Bitvault.Avalonia;
public partial class App : Application public partial class App : Application
{ {
public override void Initialize() => AvaloniaXamlLoader.Load(this); public override void Initialize()
{
this.EnableHotReload();
AvaloniaXamlLoader.Load(this);
}
public override async void OnFrameworkInitializationCompleted() public override async void OnFrameworkInitializationCompleted()
{ {
+6 -1
View File
@@ -8,8 +8,13 @@
<ItemGroup> <ItemGroup>
<AvaloniaResource Include="Assets\**" /> <AvaloniaResource Include="Assets\**" />
</ItemGroup> </ItemGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<DefineConstants>$(DefineConstants);ENABLE_XAML_HOT_RELOAD</DefineConstants>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="11.1.0-beta1" /> <PackageReference Condition="$(DefineConstants.Contains(ENABLE_XAML_HOT_RELOAD))" Include="Avalonia.Markup.Xaml.Loader" Version="11.1.0-beta1" />
<PackageReference Condition="$(DefineConstants.Contains(ENABLE_XAML_HOT_RELOAD))" Include="HotAvalonia" Version="1.1.0" />
<PackageReference Include="HotAvalonia.Extensions" Version="1.1.0" PrivateAssets="All" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.1.0-beta1" /> <PackageReference Include="Avalonia.Fonts.Inter" Version="11.1.0-beta1" />
<PackageReference Include="Avalonia.Labs.Controls" Version="11.0.10.1" /> <PackageReference Include="Avalonia.Labs.Controls" Version="11.0.10.1" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" /> <PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
+2 -2
View File
@@ -9,9 +9,9 @@
TransparencyLevelHint="Mica"> TransparencyLevelHint="Mica">
<ContentControl x:Name="Window"> <ContentControl x:Name="Window">
<Interaction.Behaviors> <Interaction.Behaviors>
<AttachedBehavior> <AttachedBehaviour>
<NavigateAction Context="Window" Route="Main" /> <NavigateAction Context="Window" Route="Main" />
</AttachedBehavior> </AttachedBehaviour>
</Interaction.Behaviors> </Interaction.Behaviors>
</ContentControl> </ContentControl>
</windowing:AppWindow> </windowing:AppWindow>
+2 -2
View File
@@ -11,9 +11,9 @@
PasswordChar="&#x25CF;" PasswordChar="&#x25CF;"
Text="{Binding Password}"> Text="{Binding Password}">
<Interaction.Behaviors> <Interaction.Behaviors>
<KeyBindingTriggerBehavior Gesture="Enter"> <KeyBindingTriggerBehaviour Gesture="Enter">
<InvokeCommandAction Command="{Binding InvokeCommand}" /> <InvokeCommandAction Command="{Binding InvokeCommand}" />
</KeyBindingTriggerBehavior> </KeyBindingTriggerBehaviour>
</Interaction.Behaviors> </Interaction.Behaviors>
</TextBox> </TextBox>
</StackPanel> </StackPanel>
+13 -5
View File
@@ -8,7 +8,8 @@
Content="{Binding Name}" Content="{Binding Name}"
IsExpanded="{Binding Expanded, Mode=TwoWay}" IsExpanded="{Binding Expanded, Mode=TwoWay}"
IsSelected="{Binding Selected}" IsSelected="{Binding Selected}"
MenuItemsSource="{Binding}"> MenuItemsSource="{Binding}"
SelectsOnInvoked="True">
<Interaction.Behaviors> <Interaction.Behaviors>
<DataTriggerBehavior Binding="{Binding Opened}" Value="False"> <DataTriggerBehavior Binding="{Binding Opened}" Value="False">
<ConditionAction> <ConditionAction>
@@ -18,6 +19,10 @@
</ConditionalExpression> </ConditionalExpression>
</ConditionAction.Condition> </ConditionAction.Condition>
<NavigateAction Context="Main" Route="OpenVault" /> <NavigateAction Context="Main" Route="OpenVault" />
<ChangePropertyAction
PropertyName="SelectsOnInvoked"
TargetObject="{Binding #NavigationViewItem}"
Value="True" />
</ConditionAction> </ConditionAction>
</DataTriggerBehavior> </DataTriggerBehavior>
<DataTriggerBehavior Binding="{Binding Opened}" Value="True"> <DataTriggerBehavior Binding="{Binding Opened}" Value="True">
@@ -28,14 +33,18 @@
</ConditionalExpression> </ConditionalExpression>
</ConditionAction.Condition> </ConditionAction.Condition>
<NavigateAction Context="Main" Route="Vault" /> <NavigateAction Context="Main" Route="Vault" />
<ChangePropertyAction
PropertyName="SelectsOnInvoked"
TargetObject="{Binding #NavigationViewItem}"
Value="False" />
<SelectNavigationViewItemAction />
</ConditionAction> </ConditionAction>
</DataTriggerBehavior> </DataTriggerBehavior>
<DataTriggerBehavior Binding="{Binding Selected}" Value="True"> <NavigationViewItemInvokedBehaviour SelectsChildOnInvoked="True">
<ConditionAction> <ConditionAction>
<ConditionAction.Condition> <ConditionAction.Condition>
<ConditionalExpression ForwardChaining="And"> <ConditionalExpression ForwardChaining="And">
<ComparisonCondition LeftOperand="{Binding Opened}" RightOperand="False" /> <ComparisonCondition LeftOperand="{Binding Opened}" RightOperand="False" />
<ComparisonCondition LeftOperand="{Binding Selected}" RightOperand="False" />
<ComparisonCondition LeftOperand="{Binding #NavigationViewItem.IsChildSelected}" RightOperand="False" /> <ComparisonCondition LeftOperand="{Binding #NavigationViewItem.IsChildSelected}" RightOperand="False" />
</ConditionalExpression> </ConditionalExpression>
</ConditionAction.Condition> </ConditionAction.Condition>
@@ -45,12 +54,11 @@
<ConditionAction.Condition> <ConditionAction.Condition>
<ConditionalExpression ForwardChaining="And"> <ConditionalExpression ForwardChaining="And">
<ComparisonCondition LeftOperand="{Binding Opened}" RightOperand="True" /> <ComparisonCondition LeftOperand="{Binding Opened}" RightOperand="True" />
<ComparisonCondition LeftOperand="{Binding Selected}" RightOperand="False" />
<ComparisonCondition LeftOperand="{Binding #NavigationViewItem.IsChildSelected}" RightOperand="False" /> <ComparisonCondition LeftOperand="{Binding #NavigationViewItem.IsChildSelected}" RightOperand="False" />
</ConditionalExpression> </ConditionalExpression>
</ConditionAction.Condition> </ConditionAction.Condition>
<NavigateAction Context="Main" Route="Vault" /> <NavigateAction Context="Main" Route="Vault" />
</ConditionAction> </ConditionAction>
</DataTriggerBehavior> </NavigationViewItemInvokedBehaviour>
</Interaction.Behaviors> </Interaction.Behaviors>
</NavigationViewItem> </NavigationViewItem>
@@ -4,6 +4,9 @@ namespace Bitvault.Avalonia
{ {
public partial class VaultNavigationView : NavigationViewItem public partial class VaultNavigationView : NavigationViewItem
{ {
public VaultNavigationView() => InitializeComponent(); public VaultNavigationView()
{
InitializeComponent();
}
} }
} }
+1
View File
@@ -17,6 +17,7 @@
Height="40" Height="40"
Margin="0,4,0,0" Margin="0,4,0,0"
ColumnDefinitions="*,Auto"> ColumnDefinitions="*,Auto">
<TextBlock Grid.Column="0" Text="Title goes here" />
<Button <Button
Grid.Column="1" Grid.Column="1"
Width="{StaticResource ButtonWidth}" Width="{StaticResource ButtonWidth}"
+8 -3
View File
@@ -1,12 +1,17 @@
using Toolkit.Foundation; using CommunityToolkit.Mvvm.ComponentModel;
using Toolkit.Foundation;
namespace Bitvault; namespace Bitvault;
public class CategoriesNavigationViewModel(IServiceProvider provider, public partial class CategoriesNavigationViewModel(IServiceProvider provider,
IServiceFactory factory, IServiceFactory factory,
IMediator mediator, IMediator mediator,
IPublisher publisher, IPublisher publisher,
ISubscriber subscriber, ISubscriber subscriber,
IDisposer disposer) : IDisposer disposer) :
ObservableViewModel(provider, factory, mediator, publisher, subscriber, disposer), ObservableViewModel(provider, factory, mediator, publisher, subscriber, disposer),
IVaultNavigationViewModel; IVaultNavigationViewModel
{
[ObservableProperty]
private bool selected;
}
+4 -2
View File
@@ -1,3 +1,5 @@
namespace Bitvault; using Toolkit.Foundation;
public interface IVaultNavigationViewModel; namespace Bitvault;
public interface IVaultNavigationViewModel : ISelectable;
+1 -2
View File
@@ -38,13 +38,12 @@ public partial class VaultNavigationViewModel :
public Task Handle(Opened args, CancellationToken cancellationToken = default) public Task Handle(Opened args, CancellationToken cancellationToken = default)
{ {
Opened = true;
Add<AllNavigationViewModel>(); Add<AllNavigationViewModel>();
Add<StarredNavigationViewModel>(); Add<StarredNavigationViewModel>();
Add<ArchiveNavigationViewModel>(); Add<ArchiveNavigationViewModel>();
Add<CategoriesNavigationViewModel>(); Add<CategoriesNavigationViewModel>();
Opened = true;
return Task.CompletedTask; return Task.CompletedTask;
} }
+3 -1
View File
@@ -9,7 +9,9 @@ public class VaultViewModelHandler(IServiceFactory factory,
public async Task Handle(Enumerate<LockerNavigationViewModel> args, public async Task Handle(Enumerate<LockerNavigationViewModel> args,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
for (int i = 0; i < 5000; i++) Random rnd = new Random();
int d = rnd.Next(5, 10);
for (int i = 0; i < 2; i++)
{ {
if (factory.Create<LockerNavigationViewModel>() is LockerNavigationViewModel viewModel) if (factory.Create<LockerNavigationViewModel>() is LockerNavigationViewModel viewModel)
{ {