2016-11-14 122 views
1

我嘗試創建一個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類工作?謝謝!

+1

初始化代碼將在構造函數之前運行,所以'Instance.MyHamburgerMenu'將是Nothing – Plutonix

回答

2

您對'HamburgerMenu'屬性的轉換不正確。 使用:

Public Shared ReadOnly Property HamburgerMenu() As HamburgerMenu 
    Get 
     Return Instance.MyHamburgerMenu 
    End Get 
End Property 

原始C#使用關於「HamburgerMenu」一個「表達健全」部件 - 該功能未處於VB提供。

+0

謝謝,現在它的工作! – SZL

+0

將「正確答案」標記爲「答案」被認爲是禮貌的 –

相關問題