diff --git a/VB/DXSample.sln b/VB/DXSample.sln
new file mode 100644
index 0000000..c7dd962
--- /dev/null
+++ b/VB/DXSample.sln
@@ -0,0 +1,24 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.30717.126
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DXSample", "DXSample\DXSample.vbproj", "{00C97825-9B02-4739-AEFB-544577EC448C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {00C97825-9B02-4739-AEFB-544577EC448C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {00C97825-9B02-4739-AEFB-544577EC448C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {00C97825-9B02-4739-AEFB-544577EC448C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {00C97825-9B02-4739-AEFB-544577EC448C}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {E4EC9373-B0EC-4A38-B040-66662796BF8F}
+ EndGlobalSection
+EndGlobal
diff --git a/VB/DXSample/App.config b/VB/DXSample/App.config
new file mode 100644
index 0000000..d44e073
--- /dev/null
+++ b/VB/DXSample/App.config
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+ Office2019Colorful
+
+
+
+
\ No newline at end of file
diff --git a/VB/DXSample/Application.xaml b/VB/DXSample/Application.xaml
new file mode 100644
index 0000000..06cd12c
--- /dev/null
+++ b/VB/DXSample/Application.xaml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/VB/DXSample/Application.xaml.vb b/VB/DXSample/Application.xaml.vb
new file mode 100644
index 0000000..f27a8df
--- /dev/null
+++ b/VB/DXSample/Application.xaml.vb
@@ -0,0 +1,13 @@
+Imports System
+Imports System.Linq
+Imports System.Windows
+
+Namespace DXSample
+ '''
+ ''' Interaction logic for App.xaml
+ '''
+ Partial Public Class App
+ Inherits Application
+
+ End Class
+End Namespace
diff --git a/VB/DXSample/Common/LayoutAdapter.vb b/VB/DXSample/Common/LayoutAdapter.vb
new file mode 100644
index 0000000..91711f1
--- /dev/null
+++ b/VB/DXSample/Common/LayoutAdapter.vb
@@ -0,0 +1,29 @@
+Imports System
+Imports System.Linq
+Imports DevExpress.Xpf.Docking
+Imports DXSample.ViewModels
+
+Namespace DXSample.Common
+
+ Public Class LayoutAdapter
+ Implements ILayoutAdapter
+
+ Public Function Resolve(ByVal owner As DockLayoutManager, ByVal item As Object) As String
+ Dim tempVar As Boolean = TypeOf item Is PanelViewModel
+ Dim panelViewModel As PanelViewModel = If(tempVar, CType(item, PanelViewModel), Nothing)
+ If tempVar Then
+ Select Case panelViewModel.State
+ Case State.Float
+ Dim floatGroup As New FloatGroup() With {.Name = $"floatGroup{owner.FloatGroups.Count}"}
+ owner.FloatGroups.Add(floatGroup)
+ Return floatGroup.Name
+ Case State.Regular
+ Return "documentGroup"
+ Case Else
+ Return panelViewModel.ParentName
+ End Select
+ End If
+ Return String.Empty
+ End Function
+ End Class
+End Namespace
diff --git a/VB/DXSample/DXSample.vbproj b/VB/DXSample/DXSample.vbproj
new file mode 100644
index 0000000..908b3f5
--- /dev/null
+++ b/VB/DXSample/DXSample.vbproj
@@ -0,0 +1,174 @@
+
+
+
+ Debug
+ x86
+ 8.0.30703
+ 2.0
+ {00C97825-9B02-4739-AEFB-544577EC448C}
+ WinExe
+
+ DXSample
+ v4.7.2
+ 512
+ {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}
+ On
+ Binary
+ Off
+ On
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ true
+ true
+ prompt
+ true
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ false
+ true
+ prompt
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ C:\DXDlls\20.2.4\DevExpress.Mvvm.v20.2.dll
+
+
+ True
+ C:\DXDlls\20.2.4\DevExpress.Data.Desktop.v20.2.dll
+
+
+ True
+ C:\DXDlls\20.2.4\DevExpress.Data.v20.2.dll
+
+
+ True
+ C:\DXDlls\20.2.4\DevExpress.Printing.v20.2.Core.dll
+
+
+ True
+ C:\DXDlls\20.2.4\DevExpress.Xpf.Core.v20.2.dll
+
+
+ False
+ True
+ C:\DXDlls\20.2.4\DevExpress.Xpf.Docking.v20.2.dll
+
+
+ False
+ True
+ C:\DXDlls\20.2.4\DevExpress.Xpf.Layout.v20.2.Core.dll
+
+
+ True
+ C:\DXDlls\20.2.4\DevExpress.Xpf.Themes.Office2019Colorful.v20.2.dll
+
+
+
+
+
+
+
+
+
+ 4.0
+
+
+
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+ MSBuild:Compile
+ Designer
+
+
+ Application.xaml
+ Code
+
+
+
+ MainWindow.xaml
+ Code
+
+
+
+ MainView.xaml
+ Code
+
+
+ MSBuild:Compile
+ Designer
+
+
+
+
+ Code
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+ VbMyResourcesResXFileCodeGenerator
+ Resources.Designer.vb
+ My.Resources
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.vb
+ My
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VB/DXSample/MainWindow.xaml b/VB/DXSample/MainWindow.xaml
new file mode 100644
index 0000000..d894a90
--- /dev/null
+++ b/VB/DXSample/MainWindow.xaml
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/VB/DXSample/MainWindow.xaml.vb b/VB/DXSample/MainWindow.xaml.vb
new file mode 100644
index 0000000..11daaa1
--- /dev/null
+++ b/VB/DXSample/MainWindow.xaml.vb
@@ -0,0 +1,13 @@
+Imports System
+Imports System.Linq
+Imports DevExpress.Xpf.Core
+
+Namespace DXSample
+ Partial Public Class MainWindow
+ Inherits ThemedWindow
+
+ Public Sub New()
+ InitializeComponent()
+ End Sub
+ End Class
+End Namespace
diff --git a/VB/DXSample/My Project/AssemblyInfo.vb b/VB/DXSample/My Project/AssemblyInfo.vb
new file mode 100644
index 0000000..dd8f4b5
--- /dev/null
+++ b/VB/DXSample/My Project/AssemblyInfo.vb
@@ -0,0 +1,40 @@
+Imports System.Reflection
+Imports System.Resources
+Imports System.Runtime.CompilerServices
+Imports System.Runtime.InteropServices
+Imports System.Windows
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+
+
+
+
+
+
+
+' Setting ComVisible to false makes the types in this assembly not visible
+' to COM components. If you need to access a type in this assembly from
+' COM, set the ComVisible attribute to true on that type.
+
+'In order to begin building localizable applications, set
+'CultureYouAreCodingWith in your .csproj file
+'inside a . For example, if you are using US english
+'in your source files, set the to en-US. Then uncomment
+'the NeutralResourceLanguage attribute below. Update the "en-US" in
+'the line below to match the UICulture setting in the project file.
+'[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+' [assembly: AssemblyVersion("1.0.*")]
+
+
diff --git a/VB/DXSample/My Project/Resources.Designer.vb b/VB/DXSample/My Project/Resources.Designer.vb
new file mode 100644
index 0000000..83e342e
--- /dev/null
+++ b/VB/DXSample/My Project/Resources.Designer.vb
@@ -0,0 +1,62 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.18034
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+
+Namespace My.Resources
+ '''
+ ''' A strongly-typed resource class, for looking up localized strings, etc.
+ '''
+ ' This class was auto-generated by the StronglyTypedResourceBuilder
+ ' class via a tool like ResGen or Visual Studio.
+ ' To add or remove a member, edit your .ResX file then rerun ResGen
+ ' with the /str option, or rebuild your VS project.
+
+
+
+ Friend Module Resources
+
+ Private resourceMan As System.Resources.ResourceManager
+
+ Private resourceCulture As System.Globalization.CultureInfo
+
+' internal Resources()
+' {
+' }
+
+ '''
+ ''' Returns the cached ResourceManager instance used by this class.
+ '''
+
+ Friend ReadOnly Property ResourceManager() As System.Resources.ResourceManager
+ Get
+ If (resourceMan Is Nothing) Then
+ Dim temp As New System.Resources.ResourceManager("Resources", GetType(Resources).Assembly)
+ resourceMan = temp
+ End If
+ Return resourceMan
+ End Get
+ End Property
+
+ '''
+ ''' Overrides the current thread's CurrentUICulture property for all
+ ''' resource lookups using this strongly typed resource class.
+ '''
+
+ Friend Property Culture() As System.Globalization.CultureInfo
+ Get
+ Return resourceCulture
+ End Get
+ Set(ByVal value As System.Globalization.CultureInfo)
+ resourceCulture = value
+ End Set
+ End Property
+ End Module
+End Namespace
diff --git a/VB/DXSample/My Project/Resources.resx b/VB/DXSample/My Project/Resources.resx
new file mode 100644
index 0000000..901f10d
--- /dev/null
+++ b/VB/DXSample/My Project/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/VB/DXSample/My Project/Settings.Designer.vb b/VB/DXSample/My Project/Settings.Designer.vb
new file mode 100644
index 0000000..9545265
--- /dev/null
+++ b/VB/DXSample/My Project/Settings.Designer.vb
@@ -0,0 +1,26 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.18034
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+
+Namespace My
+
+
+ Friend NotInheritable Partial Class Settings
+ Inherits System.Configuration.ApplicationSettingsBase
+
+ Private Shared defaultInstance As Settings = (CType(System.Configuration.ApplicationSettingsBase.Synchronized(New Settings()), Settings))
+
+ Public Shared ReadOnly Property [Default]() As Settings
+ Get
+ Return defaultInstance
+ End Get
+ End Property
+ End Class
+End Namespace
diff --git a/VB/DXSample/My Project/Settings.settings b/VB/DXSample/My Project/Settings.settings
new file mode 100644
index 0000000..033d7a5
--- /dev/null
+++ b/VB/DXSample/My Project/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VB/DXSample/ViewModels/MainViewModel.vb b/VB/DXSample/ViewModels/MainViewModel.vb
new file mode 100644
index 0000000..53b0265
--- /dev/null
+++ b/VB/DXSample/ViewModels/MainViewModel.vb
@@ -0,0 +1,90 @@
+Imports DevExpress.Mvvm
+Imports System
+Imports System.Collections.ObjectModel
+
+Namespace DXSample.ViewModels
+ Public Class MainViewModel
+ Inherits ViewModelBase
+
+ Public Property Panels() As ObservableCollection(Of PanelViewModel)
+ Get
+ Return GetValue(Of ObservableCollection(Of PanelViewModel))()
+ End Get
+ Set(ByVal value As ObservableCollection(Of PanelViewModel))
+ SetValue(value)
+ End Set
+ End Property
+
+ Public Sub New()
+ Panels = New ObservableCollection(Of PanelViewModel)() From {
+ New PanelViewModel() With {
+ .Caption = "One",
+ .Content = "A regular panel",
+ .State = State.Regular
+ },
+ New PanelViewModel() With {
+ .Caption = "Two",
+ .Content = "A regular panel",
+ .State = State.Regular
+ },
+ New PanelViewModel() With {
+ .Caption = "Three",
+ .Content = "A regular panel",
+ .State = State.Regular
+ },
+ New PanelViewModel() With {
+ .Caption = "Four",
+ .Content = "A float panel",
+ .State = State.Float
+ },
+ New PanelViewModel() With {
+ .Caption = "Five",
+ .Content = "A panel",
+ .ParentName = "layoutGroup"
+ }
+ }
+ End Sub
+ End Class
+ Public Enum State
+ None
+ Float
+ Regular
+ End Enum
+
+ Public Class PanelViewModel
+ Inherits ViewModelBase
+
+ Public Property Caption() As String
+ Get
+ Return GetValue(Of String)()
+ End Get
+ Set(ByVal value As String)
+ SetValue(value)
+ End Set
+ End Property
+ Public Property Content() As String
+ Get
+ Return GetValue(Of String)()
+ End Get
+ Set(ByVal value As String)
+ SetValue(value)
+ End Set
+ End Property
+ Public Property State() As State
+ Get
+ Return GetValue(Of State)()
+ End Get
+ Set(ByVal value As State)
+ SetValue(value)
+ End Set
+ End Property
+ Public Property ParentName() As String
+ Get
+ Return GetValue(Of String)()
+ End Get
+ Set(ByVal value As String)
+ SetValue(value)
+ End Set
+ End Property
+ End Class
+End Namespace
\ No newline at end of file
diff --git a/VB/DXSample/Views/MainView.xaml b/VB/DXSample/Views/MainView.xaml
new file mode 100644
index 0000000..aa0a056
--- /dev/null
+++ b/VB/DXSample/Views/MainView.xaml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VB/DXSample/Views/MainView.xaml.vb b/VB/DXSample/Views/MainView.xaml.vb
new file mode 100644
index 0000000..d1c6ab6
--- /dev/null
+++ b/VB/DXSample/Views/MainView.xaml.vb
@@ -0,0 +1,16 @@
+Imports System
+Imports System.Linq
+Imports System.Windows.Controls
+
+Namespace DXSample.Views
+ '''
+ ''' Interaction logic for View1.xaml
+ '''
+ Partial Public Class MainView
+ Inherits UserControl
+
+ Public Sub New()
+ InitializeComponent()
+ End Sub
+ End Class
+End Namespace
diff --git a/VB/NuGet.Config b/VB/NuGet.Config
new file mode 100644
index 0000000..a88ed46
--- /dev/null
+++ b/VB/NuGet.Config
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file