diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f229ef5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,37 @@
+NuclexWindowsFormsNinjectConfig.cmake
+
+# Visual Studio Codium
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+!.vscode/*.code-snippets
+
+# Visual Studio
+.vs/
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+*.userprefs
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# Coverlet is a free, cross platform Code Coverage Tool
+coverage*.json
+coverage*.xml
+coverage*.info
+
+# Artifacts
+[Bb]in/
+[Oo]bj/
diff --git a/Dependencies.md b/Dependencies.md
new file mode 100644
index 0000000..17db399
--- /dev/null
+++ b/Dependencies.md
@@ -0,0 +1,44 @@
+Nuclex.Windows.Forms.Ninject Dependencies
+=========================================
+
+
+To Compile the Library
+----------------------
+
+This project is intended to be placed into a source tree using submodules to replicate
+the following directory layout:
+
+ root/
+ Nuclex.Windows.Forms.Ninject/ <-- you are here
+ ...
+
+ Nuclex.Windows.Forms/ <-- Git: nuclex-shared-dotnet/Nuclex.Windows.Forms
+ ...
+
+ Nuclex.Support.Native/ <-- Git: nuclex-shared-dotnet/Nuclex.Support
+ ...
+
+ third-party/
+ nunit
+ ninject
+ nmock
+
+You should already have that directory layout in place if you cloned the "frame fixer"
+repository (with `--recurse-submodules`).
+
+The actual, direct requirements of the code to compile are:
+
+ * Nuclex.Support
+ * Nuclex.Windows.Forms
+ * ninject
+ * nunit (optional, if unit tests are built)
+ * nmock (optional, if unit tests are built)
+
+
+To Use this Library as a Binary
+-------------------------------
+
+ * Nuclex.Windows.Forms.Ninject.dll
+ * Nuclex.Windows.Forms.dll
+ * Nuclex.Support.dll
+ * Ninject.dll
diff --git a/License.md b/License.md
new file mode 100644
index 0000000..15020da
--- /dev/null
+++ b/License.md
@@ -0,0 +1,180 @@
+Apache License
+==============
+
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+------------------------------------------------------------
+
+ 1. _Definitions_.
+
+ **"License"** shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ **"Licensor"** shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ **"Legal Entity"** shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ **"control"** means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ **"You"** (or **"Your"**) shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ **"Source"** form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ **"Object"** form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ **"Work"** shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ **"Derivative Works"** shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ **"Contribution"** shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, **"submitted"**
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as **"Not a Contribution."**
+
+ **"Contributor"** shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. _Grant of Copyright License_. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. _Grant of Patent License_. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. _Redistribution_. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ - **(a)** You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ - **(b)** You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ - **(c)** You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ - **(d)** If the Work includes a **"Notice.md"** text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such **Notice.md** file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. _Submission of Contributions_. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. _Trademarks_. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. _Disclaimer of Warranty_. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. _Limitation of Liability_. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. _Accepting Warranty or Additional Liability_. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
diff --git a/Notice.md b/Notice.md
new file mode 100644
index 0000000..88ae4b7
--- /dev/null
+++ b/Notice.md
@@ -0,0 +1,48 @@
+Nuclex.Windows.Forms.Ninject Attribution
+========================================
+
+This library is licensed under the Apache License 2.0,
+http://www.apache.org/licenses/
+
+
+You can:
+--------
+
+- Use this library in closed source and commercial applications.
+- Distribute this library's unmodified source code.
+- Distribute binaries compiled from the unmodified source code.
+
+- Modify the source code of this library and keep the changes to yourself.
+- Modify the source code of this library and publish the changes,
+ so long as you make it very clear that, and how, you changed the code.
+
+
+You can not:
+------------
+
+- Put this library under a different license or
+- Sell access to this library's code
+
+- Sue anyone for issues you have with this code.
+
+- Pretend that you wrote this
+- Use the names of any of this library's authors to promote your own work.
+
+
+Attribution
+===========
+
+If you distribute binaries of this library, you should include this license
+file somewhere in your documentation or other legal text.
+
+A mention of your product's use of this library as well as of the embedded
+third-party libraries in your splash screen, credits or such would be nice,
+but is not required.
+
+
+Example Attribution Text
+------------------------
+
+Uses supporting code from the Nuclex.Windows.Forms.Ninject library, written by
+Markus Ewald and licensed under the terms of the Apache License 2.0
+(http://www.apache.org/licenses/)
diff --git a/Nuclex.Windows.Forms.Ninject (net-4.6).csproj b/Nuclex.Windows.Forms.Ninject (net-4.6).csproj
index f2dd5f2..45a8d13 100644
--- a/Nuclex.Windows.Forms.Ninject (net-4.6).csproj
+++ b/Nuclex.Windows.Forms.Ninject (net-4.6).csproj
@@ -36,6 +36,9 @@
bin\net-4.6\Release\Nuclex.Windows.Forms.Ninject.xml
false
+
+ $(SolutionDir)third-party\
+
true
@@ -43,8 +46,8 @@
..\Foundation.snk
-
- ..\References\ninject\net-4.6-inofficial\Ninject.dll
+
+ ..\third-party\Ninject.2.2.1.4\lib\net40-Full\Ninject.dll
@@ -63,6 +66,11 @@
Foundation.snk
+
+
+
+
+
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
index f3ddb16..e61b2d1 100644
--- a/Properties/AssemblyInfo.cs
+++ b/Properties/AssemblyInfo.cs
@@ -1,49 +1,48 @@
-#region CPL License
-/*
-Nuclex Framework
-Copyright (C) 2002-2019 Nuclex Development Labs
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the IBM Common Public License as
-published by the IBM Corporation; either version 1.0 of the
-License, or (at your option) any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-IBM Common Public License for more details.
-
-You should have received a copy of the IBM Common Public
-License along with this library
-*/
-#endregion
-
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// 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.
-[assembly: AssemblyTitle("Nuclex.Windows.Forms.Ninject")]
-[assembly: AssemblyProduct("Nuclex.Windows.Forms.Ninject")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyCompany("Nuclex Development Labs")]
-[assembly: AssemblyCopyright("Copyright © Nuclex Development Labs 2019")]
-
-// 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.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("4b185e46-672f-4629-98e8-82db07aa8147")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-[assembly: AssemblyVersion("1.0.0.0")]
+#region Apache License 2.0
+/*
+Nuclex .NET Framework
+Copyright (C) 2002-2024 Markus Ewald / Nuclex Development Labs
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#endregion // Apache License 2.0
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 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.
+[assembly: AssemblyTitle("Nuclex.Windows.Forms.Ninject")]
+[assembly: AssemblyProduct("Nuclex.Windows.Forms.Ninject")]
+[assembly: AssemblyDescription("Add-on module to use Nuclex.Windows.Forms MVVM with Ninject dependency injection")]
+[assembly: AssemblyCompany("Nuclex Development Labs")]
+[assembly: AssemblyCopyright("Copyright © Markus Ewald / Nuclex Development Labs 2002-2024")]
+
+// 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.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("4b185e46-672f-4629-98e8-82db07aa8147")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
diff --git a/ReadMe.md b/ReadMe.md
new file mode 100644
index 0000000..0c19f47
--- /dev/null
+++ b/ReadMe.md
@@ -0,0 +1,17 @@
+ - **Status:** Stable and mature. Several projects are using this library,
+ and it has received extensive testing on Linux and Windows.
+
+ - **Platforms:** Cross-platform, developed on Linux but also tested and
+ working without any known issues on Windows.
+
+Nuclex.Windows.Forms.Ninject
+============================
+
+Nuclex.Windows.Forms is a standalone, lightweight MVVM library that lets you "display"
+view models by automatically picking a default view, creating an instance of it and
+of your view model.
+
+This library provides a module for Ninject by which view models can not just be
+constructed via a default constructor, byt can use full constructor injection to require
+services such as the `IMessageService` (to display message boxes), the `IWindowManager`
+to open modal and modeless child windows and anything else you bind via Ninject.
diff --git a/Source/MvvmModule.cs b/Source/MvvmModule.cs
index 45ff203..eb6df15 100644
--- a/Source/MvvmModule.cs
+++ b/Source/MvvmModule.cs
@@ -1,74 +1,73 @@
-#region CPL License
-/*
-Nuclex Framework
-Copyright (C) 2002-2019 Nuclex Development Labs
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the IBM Common Public License as
-published by the IBM Corporation; either version 1.0 of the
-License, or (at your option) any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-IBM Common Public License for more details.
-
-You should have received a copy of the IBM Common Public
-License along with this library
-*/
-#endregion
-
-using System;
-
-using Ninject;
-using Ninject.Activation;
-using Ninject.Modules;
-
-using Nuclex.Windows.Forms.AutoBinding;
-using Nuclex.Windows.Forms.CommonDialogs;
-using Nuclex.Windows.Forms.Messages;
-
-namespace Nuclex.Windows.Forms.Ninject {
-
- /// Sets up the service bindings for an MVVM-based WPF application
- public class MvvmModule : NinjectModule {
-
- /// Called when the module is loaded into the kernel
- public override void Load() {
-
- // The task dialog message service actually supports two interfaces
- Kernel.Bind().To().InSingletonScope();
-
- // Use the common dialog manager to display file open, save or print dialogs
- Kernel.Bind().To().InSingletonScope();
-
- // The window manager keeps track of active windows and can figure out
- // which window to display for a view model by its naming convention.
- Kernel.Bind().To().InSingletonScope();
- Kernel.Bind().ToMethod(getWindowManager).InSingletonScope();
- Kernel.Bind().ToMethod(getWindowManager).InSingletonScope();
- Kernel.Bind().ToMethod(CreateAutoBinder).InSingletonScope();
-
- }
-
- /// Creates and initializd the auto view model binder
- ///
- /// Context containing environmental informations about the request and the kernel
- ///
- /// The view model auto binder that will be used by the application
- protected virtual IAutoBinder CreateAutoBinder(IContext context) {
- return new ConventionBinder();
- }
-
- /// Retrieves the window manager from the kernel
- ///
- /// Context containing environmental informations about the request and the kernel
- ///
- /// The window manager registered to the kernel
- private static WindowManager getWindowManager(IContext context) {
- return context.Kernel.Get();
- }
-
- }
-
-} // namespace Nuclex.Windows.Forms.Ninject
+#region Apache License 2.0
+/*
+Nuclex .NET Framework
+Copyright (C) 2002-2024 Markus Ewald / Nuclex Development Labs
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#endregion // Apache License 2.0
+
+using System;
+
+using Ninject;
+using Ninject.Activation;
+using Ninject.Modules;
+
+using Nuclex.Windows.Forms.AutoBinding;
+using Nuclex.Windows.Forms.CommonDialogs;
+using Nuclex.Windows.Forms.Messages;
+
+namespace Nuclex.Windows.Forms.Ninject {
+
+ /// Sets up the service bindings for an MVVM-based WPF application
+ public class MvvmModule : NinjectModule {
+
+ /// Called when the module is loaded into the kernel
+ public override void Load() {
+
+ // The task dialog message service actually supports two interfaces
+ Kernel.Bind().To().InSingletonScope();
+
+ // Use the common dialog manager to display file open, save or print dialogs
+ Kernel.Bind().To().InSingletonScope();
+
+ // The window manager keeps track of active windows and can figure out
+ // which window to display for a view model by its naming convention.
+ Kernel.Bind().To().InSingletonScope();
+ Kernel.Bind().ToMethod(getWindowManager).InSingletonScope();
+ Kernel.Bind().ToMethod(getWindowManager).InSingletonScope();
+ Kernel.Bind().ToMethod(CreateAutoBinder).InSingletonScope();
+
+ }
+
+ /// Creates and initializd the auto view model binder
+ ///
+ /// Context containing environmental informations about the request and the kernel
+ ///
+ /// The view model auto binder that will be used by the application
+ protected virtual IAutoBinder CreateAutoBinder(IContext context) {
+ return new ConventionBinder();
+ }
+
+ /// Retrieves the window manager from the kernel
+ ///
+ /// Context containing environmental informations about the request and the kernel
+ ///
+ /// The window manager registered to the kernel
+ private static WindowManager getWindowManager(IContext context) {
+ return context.Kernel.Get();
+ }
+
+ }
+
+} // namespace Nuclex.Windows.Forms.Ninject
diff --git a/Source/NinjectWindowManager.cs b/Source/NinjectWindowManager.cs
index 0530604..81143af 100644
--- a/Source/NinjectWindowManager.cs
+++ b/Source/NinjectWindowManager.cs
@@ -1,61 +1,60 @@
-#region CPL License
-/*
-Nuclex Framework
-Copyright (C) 2002-2019 Nuclex Development Labs
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the IBM Common Public License as
-published by the IBM Corporation; either version 1.0 of the
-License, or (at your option) any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-IBM Common Public License for more details.
-
-You should have received a copy of the IBM Common Public
-License along with this library
-*/
-#endregion
-
-using System;
-
-using Ninject;
-
-using Nuclex.Windows.Forms.AutoBinding;
-
-namespace Nuclex.Windows.Forms.Ninject {
-
- /// Window manager that is using Ninject
- public class NinjectWindowManager : WindowManager {
-
- /// Initializes a new window manager
- ///
- /// Ninject kernel the window manager uses to construct view models
- ///
- ///
- /// View model binder that will be used to bind all created views to their models
- ///
- public NinjectWindowManager(IKernel kernel, IAutoBinder autoBinder = null) :
- base(autoBinder) {
- this.kernel = kernel;
- }
-
- /// Creates an instance of the specified type
- /// Type an instance will be created of
- /// The created instance
- ///
- /// Use this to wire up your dependency injection container. By default,
- /// the Activator class will be used to create instances which only works
- /// if all of your view models are concrete classes.
- ///
- protected override object CreateInstance(Type type) {
- return this.kernel.Get(type);
- }
-
- /// The Ninject kernel used to create new instances
- private readonly IKernel kernel;
-
- }
-
-} // namespace Nuclex.Windows.Forms.Ninject
+#region Apache License 2.0
+/*
+Nuclex .NET Framework
+Copyright (C) 2002-2024 Markus Ewald / Nuclex Development Labs
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#endregion // Apache License 2.0
+
+using System;
+
+using Ninject;
+
+using Nuclex.Windows.Forms.AutoBinding;
+
+namespace Nuclex.Windows.Forms.Ninject {
+
+ /// Window manager that is using Ninject
+ public class NinjectWindowManager : WindowManager {
+
+ /// Initializes a new window manager
+ ///
+ /// Ninject kernel the window manager uses to construct view models
+ ///
+ ///
+ /// View model binder that will be used to bind all created views to their models
+ ///
+ public NinjectWindowManager(IKernel kernel, IAutoBinder autoBinder = null) :
+ base(autoBinder) {
+ this.kernel = kernel;
+ }
+
+ /// Creates an instance of the specified type
+ /// Type an instance will be created of
+ /// The created instance
+ ///
+ /// Use this to wire up your dependency injection container. By default,
+ /// the Activator class will be used to create instances which only works
+ /// if all of your view models are concrete classes.
+ ///
+ protected override object CreateInstance(Type type) {
+ return this.kernel.Get(type);
+ }
+
+ /// The Ninject kernel used to create new instances
+ private readonly IKernel kernel;
+
+ }
+
+} // namespace Nuclex.Windows.Forms.Ninject
diff --git a/packages.config b/packages.config
new file mode 100644
index 0000000..01afb77
--- /dev/null
+++ b/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file