I am using storage to save and retrieve the status of the pane in the navigationView
<NavigationView
x:Name="NavView"
Margin="0,50,0,0"
IsBackButtonVisible="Collapsed"
IsPaneToggleButtonVisible="False"
IsSettingsVisible="False"
PaneDisplayMode="Left">
<Interactivity:Interaction.Behaviors>
<Interactivity:EventTriggerBehavior EventName="SelectionChanged">
<Interactivity:InvokeCommandAction Command="{x:Bind MainWindowModel.NavigateCommand}" />
</Interactivity:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
<!-- Avatar & Dropdown at the TOP -->
<NavigationView.PaneCustomContent>
<StackPanel
Margin="10,0,0,5"
Orientation="Horizontal">
<Button
Background="Transparent"
BorderBrush="Transparent"
FocusVisualPrimaryBrush="Transparent"
FocusVisualSecondaryBrush="Transparent">
<Button.Style>
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Button.Style>
<Button.Flyout>
<Flyout
x:Name="OptionsMenu"
Placement="Bottom">
<StackPanel Orientation="Horizontal">
<TextBlock
Margin="0,0,0,4"
VerticalAlignment="Center"
Text="Compact Mode" />
<ToggleSwitch
Margin="10,0,0,0"
IsOn="{Binding IsCompactModeEnabled, Mode=TwoWay}" />
</StackPanel>
</Flyout>
</Button.Flyout>
So, when I press the button and enable coompactMode, I hide the pane and save it
public partial class MainWindowViewModel : ObservableObject {
private const string IsCompactModeEnabledKey = "IsCompactModeEnabled";
private readonly ApplicationDataContainer _localSettings = ApplicationData.Current.LocalSettings;
public Action<bool>? isCompactMode;
[ObservableProperty]
Type? currentPageType;
[ObservableProperty]
bool isCompactModeEnabled;
public MainWindowViewModel() {
if(_localSettings.Values.TryGetValue(IsCompactModeEnabledKey, out var storedValue)
&& storedValue is bool savedBool) {
IsCompactModeEnabled = savedBool;
}
else {
IsCompactModeEnabled = false; // Default value
}
CurrentPageType = typeof(CalendarPage);
}
[RelayCommand]
void Navigate(NavigationViewSelectionChangedEventArgs args) {
if(args.SelectedItem is NavigationViewItem selectedItem && selectedItem.Tag is string pageTag) {
var assembly = Assembly.GetExecutingAssembly(); // Get current assembly
CurrentPageType = assembly.GetType($"HorizonHub.View.{pageTag}");
}
}
partial void OnIsCompactModeEnabledChanged(bool value) {
isCompactMode?.Invoke(value);
_localSettings.Values["IsCompactModeEnabled"] = value;
}
}
}
But If I hide the pane and start the app again, the pane is open

code
https://github.com/eduardoagr/Horizon-Hub