I try to create a VB.NET version of the Template10 UWP template.
The template is almost ready, but after execution I get an error message in Shell.xaml.vb file. The original C# code of this class:
public sealed partial class Shell : Page
{
public static Shell Instance { get; set; }
public static HamburgerMenu HamburgerMenu => Instance.MyHamburgerMenu;
Services.SettingsServices.SettingsService _settings;
public Shell()
{
Instance = this;
InitializeComponent();
_settings = Services.SettingsServices.SettingsService.Instance;
}
public Shell(INavigationService navigationService) : this()
{
SetNavigationService(navigationService);
}
public void SetNavigationService(INavigationService navigationService)
{
MyHamburgerMenu.NavigationService = navigationService;
HamburgerMenu.RefreshStyles(_settings.AppTheme, true);
HamburgerMenu.IsFullScreen = _settings.IsFullScreen;
HamburgerMenu.HamburgerButtonVisibility = _settings.ShowHamburgerButton ? Visibility.Visible : Visibility.Collapsed;
}
}
and the converted version in VB.NET:
Partial Public NotInheritable Class Shell
Inherits Page
Public Shared Property Instance As Shell
Public Shared Property HamburgerMenu As HamburgerMenu = Instance.MyHamburgerMenu
Public _settings As SampleApp.Services.SettingsServices.SettingsService
Public Sub New()
Instance = Me
InitializeComponent()
_settings = SampleApp.Services.SettingsServices.SettingsService.Instance
End Sub
Public Sub New(navigationService As INavigationService)
Me.New()
SetNavigationService(navigationService)
End Sub
Public Sub SetNavigationService(navigationService As INavigationService)
MyHamburgerMenu.NavigationService = navigationService
HamburgerMenu.RefreshStyles(_settings.AppTheme, True)
HamburgerMenu.IsFullScreen = _settings.IsFullScreen
HamburgerMenu.HamburgerButtonVisibility = If(_settings.ShowHamburgerButton, Visibility.Visible, Visibility.Collapsed)
End Sub
End Class
The entry point of the execution is:
Public Sub New(navigationService As INavigationService)
and the exception occurs at this line:
Instance = Me
The exception message:
An exception of type 'System.TypeInitializationException' occurred in SampleApp.exe but was not handled in user code
Additional information: The type initializer for 'SampleApp.Views.Shell' threw an exception.
InnerException: Object reference not set to an instance of an object.
How can I make this VB.NET class working? Thanks!
Your conversion of the 'HamburgerMenu' property is incorrect. Use:
Public Shared ReadOnly Property HamburgerMenu() As HamburgerMenu
Get
Return Instance.MyHamburgerMenu
End Get
End Property
The original C# uses an 'expression-bodied' member for 'HamburgerMenu' - this feature is not available in VB.