2016-11-14 75 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

将“正确答案”标记为“答案”被认为是礼貌的 –

相关问题