我嘗試創建一個VB.NET版本的Template10 UWP template。在構造函數中爲我設置共享屬性值VB.NET
模板幾乎就緒,但執行後我在Shell.xaml.vb文件中收到錯誤消息。這個類的原始C#代碼:
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;
}
}
並且將轉換後的版本中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
執行的入口點是:
Public Sub New(navigationService As INavigationService)
併發生異常在這條線上:
Instance = Me
異常消息:
類型「System.TypeInitializationException」的一個例外發生在SampleApp.exe但在用戶代碼中沒有處理
其他信息:關於「SampleApp.Views.Shell」的類型初始引發一個例外。
InnerException:未將對象引用設置爲對象的實例。
我該如何讓這個VB.NET類工作?謝謝!
初始化代碼將在構造函數之前運行,所以'Instance.MyHamburgerMenu'將是Nothing – Plutonix