C#到VB.NET转换 - 哪里出错了?

时间:2022-03-09 19:00:06

I have recently discovered the Modern UI (Metro) Charts on CodePlex which looks to be truly excellent, and exactly what I'm looking for to complete this project.

我最近在CodePlex上发现了现代UI(Metro)图表,它看起来非常出色,正是我正在寻找的完成这个项目。

https://modernuicharts.codeplex.com/documentation

As I don't write C#, however, I rely on online converters in situations like this - they are normally very effective, but I can't seem to get this code to work. Can anyone point me in the direction of the necessary amendments? Many Thanks!

但是,由于我不编写C#,我在这种情况下依赖于在线转换器 - 它们通常非常有效,但我似乎无法使这些代码工作。有人能指出我必要的修正方向吗?非常感谢!

C# Code:

namespace TestApplication
{
    // bind this view model to your page or window (DataContext)
    public class TestPageViewModel
    {
        public ObservableCollection<TestClass> Errors { get; private set; }

        public TestPageViewModel()
        {
            Errors = new ObservableCollection<TestClass>();
            Errors.Add(new TestClass() { Category = "Globalization", Number = 75 });
            Errors.Add(new TestClass() { Category = "Features", Number = 2 });
            Errors.Add(new TestClass() { Category = "ContentTypes", Number = 12 });
            Errors.Add(new TestClass() { Category = "Correctness", Number = 83});
            Errors.Add(new TestClass() { Category = "Best Practices", Number = 29 });
        }

        private object selectedItem = null;
        public object SelectedItem
        {
            get
            {
                return selectedItem;
            }
            set
            {
                // selected item has changed
                selectedItem = value;                
            }
        }
    }

    // class which represent a data point in the chart
    public class TestClass
    {
        public string Category { get; set; }

        public int Number  { get; set; }        
    }
}

VB.NET Translation:

Public Class TestPageViewModel
    Public Property Errors() As ObservableCollection(Of TestClass)
        Get
            Return m_Errors
        End Get
        Private Set
            m_Errors = Value
        End Set
    End Property
    Private m_Errors As ObservableCollection(Of TestClass)

    Public Sub New()
        Errors = New ObservableCollection(Of TestClass)()
        Errors.Add(New TestClass() With { _
            Key .Category = "Globalization", _
            Key .Number = 75 _
        })
        Errors.Add(New TestClass() With { _
            Key .Category = "Features", _
            Key .Number = 2 _
        })
        Errors.Add(New TestClass() With { _
            Key .Category = "ContentTypes", _
            Key .Number = 12 _
        })
        Errors.Add(New TestClass() With { _
            Key .Category = "Correctness", _
            Key .Number = 83 _
        })
        Errors.Add(New TestClass() With { _
            Key .Category = "Best Practices", _
            Key .Number = 29 _
        })
    End Sub

    Private m_selectedItem As Object = Nothing
    Public Property SelectedItem() As Object
        Get
            Return m_selectedItem
        End Get
        Set
            ' selected item has changed
            m_selectedItem = value
        End Set
    End Property
End Class

Errors:

Error   2   Name of field or property being initialized in an object initializer must start with '.'.   C:\Users\Major\documents\visual studio 2013\Projects\WpfApplication3\WpfApplication3\pModernChart.xaml.vb   17  4   WpfApplication3

Warning 1   'Public Sub New()' in designer-generated type 'WpfApplication3.pModernChart' should call InitializeComponent method.    C:\Users\Major\documents\visual studio 2013\Projects\WpfApplication3\WpfApplication3\pModernChart.xaml.vb   14  16  WpfApplication3

Error   1   Type 'ObservableCollection' is not defined. C:\Users\Major\documents\visual studio 2013\Projects\WpfApplication3\WpfApplication3\pModernChart.xaml.vb   2   33  WpfApplication3

2 个解决方案

#1


3  

  • Remove all the Key which belong to anonymous-types not concrete types like TestClass.
  • 删除所有属于匿名类型的Key,而不是像TestClass这样的具体类型。

  • add Imports System.Collections.ObjectModel (VS tells you that if you hover the error)
  • 添加Imports System.Collections.ObjectModel(VS告诉你,如果你将错误悬停)


Public Class TestPageViewModel
    Public Property Errors() As ObservableCollection(Of TestClass)
        Get
            Return m_Errors
        End Get
        Private Set(value As ObservableCollection(Of TestClass))
            m_Errors = value
        End Set
    End Property
    Private m_Errors As ObservableCollection(Of TestClass)

    Public Sub New()
        Errors = New ObservableCollection(Of TestClass)()
        Errors.Add(New TestClass() With {
             .Category = "Globalization",
             .Number = 75
        })
        Errors.Add(New TestClass() With {
            .Category = "Features",
            .Number = 2
        })
        Errors.Add(New TestClass() With {
             .Category = "ContentTypes",
             .Number = 12
        })
        Errors.Add(New TestClass() With {
         .Category = "Correctness",
             .Number = 83
        })
        Errors.Add(New TestClass() With {
             .Category = "Best Practices",
             .Number = 29
        })
    End Sub

    Private m_selectedItem As Object = Nothing
    Public Property SelectedItem() As Object
        Get
            Return m_selectedItem
        End Get
        Set(value As Object)
            ' selected item has changed '
            m_selectedItem = value
        End Set
    End Property
End Class

With Key you can specify which propertis are used to determine if two anonymous types are equal and which are used in the compiler-generated hash code algorithm. In C# all properties are used automatically and you cannot change it.

使用Key,您可以指定使用哪些属性来确定两个匿名类型是否相等以及哪些属性在编译器生成的哈希代码算法中使用。在C#中,所有属性都会自动使用,您无法更改它。

#2


1  

Tim Schmelter solved your first problem.

Tim Schmelter解决了你的第一个问题。

For the last error you need the proper namespace

对于最后一个错误,您需要正确的命名空间

Imports System.Collections.ObjectModel

#1


3  

  • Remove all the Key which belong to anonymous-types not concrete types like TestClass.
  • 删除所有属于匿名类型的Key,而不是像TestClass这样的具体类型。

  • add Imports System.Collections.ObjectModel (VS tells you that if you hover the error)
  • 添加Imports System.Collections.ObjectModel(VS告诉你,如果你将错误悬停)


Public Class TestPageViewModel
    Public Property Errors() As ObservableCollection(Of TestClass)
        Get
            Return m_Errors
        End Get
        Private Set(value As ObservableCollection(Of TestClass))
            m_Errors = value
        End Set
    End Property
    Private m_Errors As ObservableCollection(Of TestClass)

    Public Sub New()
        Errors = New ObservableCollection(Of TestClass)()
        Errors.Add(New TestClass() With {
             .Category = "Globalization",
             .Number = 75
        })
        Errors.Add(New TestClass() With {
            .Category = "Features",
            .Number = 2
        })
        Errors.Add(New TestClass() With {
             .Category = "ContentTypes",
             .Number = 12
        })
        Errors.Add(New TestClass() With {
         .Category = "Correctness",
             .Number = 83
        })
        Errors.Add(New TestClass() With {
             .Category = "Best Practices",
             .Number = 29
        })
    End Sub

    Private m_selectedItem As Object = Nothing
    Public Property SelectedItem() As Object
        Get
            Return m_selectedItem
        End Get
        Set(value As Object)
            ' selected item has changed '
            m_selectedItem = value
        End Set
    End Property
End Class

With Key you can specify which propertis are used to determine if two anonymous types are equal and which are used in the compiler-generated hash code algorithm. In C# all properties are used automatically and you cannot change it.

使用Key,您可以指定使用哪些属性来确定两个匿名类型是否相等以及哪些属性在编译器生成的哈希代码算法中使用。在C#中,所有属性都会自动使用,您无法更改它。

#2


1  

Tim Schmelter solved your first problem.

Tim Schmelter解决了你的第一个问题。

For the last error you need the proper namespace

对于最后一个错误,您需要正确的命名空间

Imports System.Collections.ObjectModel