diff --git a/ReactiveUI.Winforms.Samples.Bindings/App.config b/ReactiveUI.Winforms.Samples.Bindings/App.config
index 7fa5b2d..8441b75 100644
--- a/ReactiveUI.Winforms.Samples.Bindings/App.config
+++ b/ReactiveUI.Winforms.Samples.Bindings/App.config
@@ -1,14 +1,14 @@
-
+
-
+
-
-
+
+
-
\ No newline at end of file
+
diff --git a/ReactiveUI.Winforms.Samples.Bindings/Properties/Resources.Designer.cs b/ReactiveUI.Winforms.Samples.Bindings/Properties/Resources.Designer.cs
index 9942908..6c83573 100644
--- a/ReactiveUI.Winforms.Samples.Bindings/Properties/Resources.Designer.cs
+++ b/ReactiveUI.Winforms.Samples.Bindings/Properties/Resources.Designer.cs
@@ -1,69 +1,61 @@
//------------------------------------------------------------------------------
//
-// Dieser Code wurde von einem Tool generiert.
-// Laufzeitversion: 4.0.30319.42000
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
//
-// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
-// der Code neu generiert wird.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
//
//------------------------------------------------------------------------------
-namespace ReactiveUI.Winforms.Samples.Bindings.Properties
-{
-
-
+namespace ReactiveUI.Winforms.Samples.Bindings.Properties {
+ using System;
+
+
///
- /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+ /// A strongly-typed resource class, for looking up localized strings, etc.
///
- // Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse
- // über ein Tool wie ResGen oder Visual Studio automatisch generiert.
- // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
- // mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ // 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.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
+ internal class Resources {
+
private static global::System.Resources.ResourceManager resourceMan;
-
+
private static global::System.Globalization.CultureInfo resourceCulture;
-
+
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
+ internal Resources() {
}
-
+
///
- /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+ /// Returns the cached ResourceManager instance used by this class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ReactiveUI.Winforms.Samples.Bindings.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
-
+
///
- /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
- /// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden.
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
return resourceCulture;
}
- set
- {
+ set {
resourceCulture = value;
}
}
diff --git a/ReactiveUI.Winforms.Samples.Bindings/Properties/Settings.Designer.cs b/ReactiveUI.Winforms.Samples.Bindings/Properties/Settings.Designer.cs
index c617512..86b606c 100644
--- a/ReactiveUI.Winforms.Samples.Bindings/Properties/Settings.Designer.cs
+++ b/ReactiveUI.Winforms.Samples.Bindings/Properties/Settings.Designer.cs
@@ -8,21 +8,17 @@
//
//------------------------------------------------------------------------------
-namespace ReactiveUI.Winforms.Samples.Bindings.Properties
-{
-
-
+namespace ReactiveUI.Winforms.Samples.Bindings.Properties {
+
+
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
+
+ public static Settings Default {
+ get {
return defaultInstance;
}
}
diff --git a/ReactiveUI.Winforms.Samples.Bindings/ReactiveUI.Winforms.Samples.Bindings.csproj b/ReactiveUI.Winforms.Samples.Bindings/ReactiveUI.Winforms.Samples.Bindings.csproj
index 366f4e4..77b342b 100644
--- a/ReactiveUI.Winforms.Samples.Bindings/ReactiveUI.Winforms.Samples.Bindings.csproj
+++ b/ReactiveUI.Winforms.Samples.Bindings/ReactiveUI.Winforms.Samples.Bindings.csproj
@@ -8,9 +8,10 @@
WinExe
ReactiveUI.Winforms.Samples.Bindings
ReactiveUI.Winforms.Samples.Bindings
- v4.6.1
+ v4.8
512
true
+
AnyCPU
@@ -92,6 +93,7 @@
True
Resources.resx
+ True
MainView.cs
diff --git a/ReactiveUI.Winforms.Samples.Bindings/ViewModels/MainViewModel.cs b/ReactiveUI.Winforms.Samples.Bindings/ViewModels/MainViewModel.cs
index 1e34624..4c22ec1 100644
--- a/ReactiveUI.Winforms.Samples.Bindings/ViewModels/MainViewModel.cs
+++ b/ReactiveUI.Winforms.Samples.Bindings/ViewModels/MainViewModel.cs
@@ -12,7 +12,7 @@ public MainViewModel()
{
// Set properties
ApplicationTitle = "ReactiveUI Winforms Samples by Asesjix - Bindings";
- ValueOne = "Type somthing";
+ ValueOne = "Type something";
ValueTwo = DateTime.Now.Date.ToFileTime();
}
diff --git a/ReactiveUI.Winforms.Samples.Commands/App.config b/ReactiveUI.Winforms.Samples.Commands/App.config
index 7fa5b2d..63de8b3 100644
--- a/ReactiveUI.Winforms.Samples.Commands/App.config
+++ b/ReactiveUI.Winforms.Samples.Commands/App.config
@@ -1,7 +1,7 @@
-
+
@@ -9,6 +9,10 @@
+
+
+
+
-
\ No newline at end of file
+
diff --git a/ReactiveUI.Winforms.Samples.Commands/Properties/Resources.Designer.cs b/ReactiveUI.Winforms.Samples.Commands/Properties/Resources.Designer.cs
index 6d991f7..105a962 100644
--- a/ReactiveUI.Winforms.Samples.Commands/Properties/Resources.Designer.cs
+++ b/ReactiveUI.Winforms.Samples.Commands/Properties/Resources.Designer.cs
@@ -1,69 +1,61 @@
//------------------------------------------------------------------------------
//
-// Dieser Code wurde von einem Tool generiert.
-// Laufzeitversion: 4.0.30319.42000
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
//
-// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
-// der Code neu generiert wird.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
//
//------------------------------------------------------------------------------
-namespace ReactiveUI.Winforms.Samples.Commands.Properties
-{
-
-
+namespace ReactiveUI.Winforms.Samples.Commands.Properties {
+ using System;
+
+
///
- /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+ /// A strongly-typed resource class, for looking up localized strings, etc.
///
- // Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse
- // über ein Tool wie ResGen oder Visual Studio automatisch generiert.
- // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
- // mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ // 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.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
+ internal class Resources {
+
private static global::System.Resources.ResourceManager resourceMan;
-
+
private static global::System.Globalization.CultureInfo resourceCulture;
-
+
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
+ internal Resources() {
}
-
+
///
- /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+ /// Returns the cached ResourceManager instance used by this class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ReactiveUI.Winforms.Samples.Commands.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
-
+
///
- /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
- /// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden.
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
return resourceCulture;
}
- set
- {
+ set {
resourceCulture = value;
}
}
diff --git a/ReactiveUI.Winforms.Samples.Commands/Properties/Settings.Designer.cs b/ReactiveUI.Winforms.Samples.Commands/Properties/Settings.Designer.cs
index 2b5feb5..e17846a 100644
--- a/ReactiveUI.Winforms.Samples.Commands/Properties/Settings.Designer.cs
+++ b/ReactiveUI.Winforms.Samples.Commands/Properties/Settings.Designer.cs
@@ -8,21 +8,17 @@
//
//------------------------------------------------------------------------------
-namespace ReactiveUI.Winforms.Samples.Commands.Properties
-{
-
-
+namespace ReactiveUI.Winforms.Samples.Commands.Properties {
+
+
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
+
+ public static Settings Default {
+ get {
return defaultInstance;
}
}
diff --git a/ReactiveUI.Winforms.Samples.Commands/ReactiveUI.Winforms.Samples.Commands.csproj b/ReactiveUI.Winforms.Samples.Commands/ReactiveUI.Winforms.Samples.Commands.csproj
index 50d65f5..92938ae 100644
--- a/ReactiveUI.Winforms.Samples.Commands/ReactiveUI.Winforms.Samples.Commands.csproj
+++ b/ReactiveUI.Winforms.Samples.Commands/ReactiveUI.Winforms.Samples.Commands.csproj
@@ -8,9 +8,10 @@
WinExe
ReactiveUI.Winforms.Samples.Commands
ReactiveUI.Winforms.Samples.Commands
- v4.6.1
+ v4.8
512
true
+
AnyCPU
@@ -35,35 +36,47 @@
ReactiveUI.Winforms.Samples.Commands.Program
+
+ ..\packages\DynamicData.7.2.1\lib\net461\DynamicData.dll
+
-
- ..\packages\ReactiveUI.8.0.1\lib\net461\ReactiveUI.dll
+
+ ..\packages\ReactiveUI.14.1.1\lib\net472\ReactiveUI.dll
-
- ..\packages\ReactiveUI.WinForms.8.0.1\lib\net461\ReactiveUI.Winforms.dll
+
+ ..\packages\ReactiveUI.WinForms.14.1.1\lib\net48\ReactiveUI.Winforms.dll
-
- ..\packages\Splat.4.0.0\lib\net461\Splat.dll
+
+ ..\packages\Splat.11.1.1\lib\net472\Splat.dll
..\packages\System.Drawing.Primitives.4.3.0\lib\net45\System.Drawing.Primitives.dll
-
- ..\packages\System.Reactive.Core.3.1.1\lib\net46\System.Reactive.Core.dll
+
+ ..\packages\System.Reactive.5.0.0\lib\net472\System.Reactive.dll
+
+
+ ..\packages\System.Reactive.Core.5.0.0\lib\net472\System.Reactive.Core.dll
+
+
+ ..\packages\System.Reactive.Interfaces.5.0.0\lib\net472\System.Reactive.Interfaces.dll
+
+
+ ..\packages\System.Reactive.Linq.5.0.0\lib\net472\System.Reactive.Linq.dll
-
- ..\packages\System.Reactive.Interfaces.3.1.1\lib\net45\System.Reactive.Interfaces.dll
+
+ ..\packages\System.Reactive.PlatformServices.5.0.0\lib\net472\System.Reactive.PlatformServices.dll
-
- ..\packages\System.Reactive.Linq.3.1.1\lib\net46\System.Reactive.Linq.dll
+
+ ..\packages\System.Reactive.Windows.Threading.5.0.0\lib\net472\System.Reactive.Windows.Threading.dll
-
- ..\packages\System.Reactive.PlatformServices.3.1.1\lib\net46\System.Reactive.PlatformServices.dll
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll
-
- ..\packages\System.Reactive.Windows.Threading.3.1.1\lib\net45\System.Reactive.Windows.Threading.dll
+
+ ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll
@@ -90,6 +103,7 @@
True
Resources.resx
+ True
MainView.cs
diff --git a/ReactiveUI.Winforms.Samples.Commands/ViewModels/MainViewModel.cs b/ReactiveUI.Winforms.Samples.Commands/ViewModels/MainViewModel.cs
index 4eacca1..60a2529 100644
--- a/ReactiveUI.Winforms.Samples.Commands/ViewModels/MainViewModel.cs
+++ b/ReactiveUI.Winforms.Samples.Commands/ViewModels/MainViewModel.cs
@@ -1,4 +1,5 @@
-using System.Reactive.Linq;
+using System.Reactive;
+using System.Reactive.Linq;
using System.Windows;
namespace ReactiveUI.Winforms.Samples.Commands.ViewModels
@@ -33,9 +34,9 @@ public string WithCanExecuteParameter
set => this.RaiseAndSetIfChanged(ref _withCanExecuteParameter, value);
}
- public ReactiveCommand ParameterlessCommand { get; }
- public ReactiveCommand WithParameterCommand { get; }
- public ReactiveCommand WithCanExecuteCommand { get; }
+ public ReactiveCommand ParameterlessCommand { get; }
+ public ReactiveCommand WithParameterCommand { get; }
+ public ReactiveCommand WithCanExecuteCommand { get; }
private void Parameterless()
{
diff --git a/ReactiveUI.Winforms.Samples.Commands/packages.config b/ReactiveUI.Winforms.Samples.Commands/packages.config
index 60139cd..07aaabc 100644
--- a/ReactiveUI.Winforms.Samples.Commands/packages.config
+++ b/ReactiveUI.Winforms.Samples.Commands/packages.config
@@ -1,13 +1,16 @@
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Bindings/Program.cs b/ReactiveUI.Winforms.Samples.Core.Bindings/Program.cs
new file mode 100644
index 0000000..73bfe55
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Bindings/Program.cs
@@ -0,0 +1,19 @@
+using ReactiveUI.Winforms.Samples.Core.Bindings.Views;
+using System;
+using System.Windows.Forms;
+
+namespace ReactiveUI.Winforms.Samples.Core.Bindings
+{
+ internal static class Program
+ {
+ /// The main entry point for the application.
+ [STAThread]
+ private static void Main()
+ {
+ Application.SetHighDpiMode(HighDpiMode.SystemAware);
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new MainView());
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Bindings/ReactiveUI.Winforms.Samples.Core.Bindings.csproj b/ReactiveUI.Winforms.Samples.Core.Bindings/ReactiveUI.Winforms.Samples.Core.Bindings.csproj
new file mode 100644
index 0000000..def9391
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Bindings/ReactiveUI.Winforms.Samples.Core.Bindings.csproj
@@ -0,0 +1,20 @@
+
+
+
+ WinExe
+ net5.0-windows
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Bindings/ViewModels/MainViewModel.cs b/ReactiveUI.Winforms.Samples.Core.Bindings/ViewModels/MainViewModel.cs
new file mode 100644
index 0000000..45eadd2
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Bindings/ViewModels/MainViewModel.cs
@@ -0,0 +1,37 @@
+using System;
+
+namespace ReactiveUI.Winforms.Samples.Core.Bindings.ViewModels
+{
+ public class MainViewModel : ReactiveObject
+ {
+ private string _applicationTitle;
+ private string _valueOne;
+ private long _valueTwo;
+
+ public MainViewModel()
+ {
+ // Set properties
+ ApplicationTitle = "ReactiveUI Winforms Samples by Asesjix - Bindings";
+ ValueOne = "Type something";
+ ValueTwo = DateTime.Now.Date.ToFileTime();
+ }
+
+ public string ApplicationTitle
+ {
+ get => _applicationTitle;
+ set => this.RaiseAndSetIfChanged(ref _applicationTitle, value);
+ }
+
+ public string ValueOne
+ {
+ get => _valueOne;
+ set => this.RaiseAndSetIfChanged(ref _valueOne, value);
+ }
+
+ public long ValueTwo
+ {
+ get => _valueTwo;
+ set => this.RaiseAndSetIfChanged(ref _valueTwo, value);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Bindings/Views/MainView.Designer.cs b/ReactiveUI.Winforms.Samples.Core.Bindings/Views/MainView.Designer.cs
new file mode 100644
index 0000000..8876f12
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Bindings/Views/MainView.Designer.cs
@@ -0,0 +1,142 @@
+
+namespace ReactiveUI.Winforms.Samples.Core.Bindings.Views
+{
+ partial class MainView
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.tbInputOne = new System.Windows.Forms.TextBox();
+ this.lOutputOne = new System.Windows.Forms.Label();
+ this.dtpInputTwo = new System.Windows.Forms.DateTimePicker();
+ this.lOutputTwo = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // tbInputOne
+ //
+ this.tbInputOne.Location = new System.Drawing.Point(61, 12);
+ this.tbInputOne.Name = "tbInputOne";
+ this.tbInputOne.Size = new System.Drawing.Size(125, 27);
+ this.tbInputOne.TabIndex = 0;
+ //
+ // lOutputOne
+ //
+ this.lOutputOne.AutoSize = true;
+ this.lOutputOne.Location = new System.Drawing.Point(251, 15);
+ this.lOutputOne.Name = "lOutputOne";
+ this.lOutputOne.Size = new System.Drawing.Size(50, 20);
+ this.lOutputOne.TabIndex = 1;
+ this.lOutputOne.Text = "label1";
+ //
+ // dtpInputTwo
+ //
+ this.dtpInputTwo.Location = new System.Drawing.Point(61, 45);
+ this.dtpInputTwo.Name = "dtpInputTwo";
+ this.dtpInputTwo.Size = new System.Drawing.Size(250, 27);
+ this.dtpInputTwo.TabIndex = 2;
+ //
+ // lOutputTwo
+ //
+ this.lOutputTwo.AutoSize = true;
+ this.lOutputTwo.Location = new System.Drawing.Point(376, 50);
+ this.lOutputTwo.Name = "lOutputTwo";
+ this.lOutputTwo.Size = new System.Drawing.Size(50, 20);
+ this.lOutputTwo.TabIndex = 3;
+ this.lOutputTwo.Text = "label1";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 15);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(43, 20);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "input";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(192, 15);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(53, 20);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "output";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(12, 50);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(43, 20);
+ this.label3.TabIndex = 1;
+ this.label3.Text = "input";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(317, 50);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(53, 20);
+ this.label4.TabIndex = 3;
+ this.label4.Text = "output";
+ //
+ // MainView
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(800, 450);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.lOutputTwo);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.dtpInputTwo);
+ this.Controls.Add(this.lOutputOne);
+ this.Controls.Add(this.tbInputOne);
+ this.Name = "MainView";
+ this.Text = "MainView";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox tbInputOne;
+ private System.Windows.Forms.Label lOutputOne;
+ private System.Windows.Forms.DateTimePicker dtpInputTwo;
+ private System.Windows.Forms.Label lOutputTwo;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label4;
+ }
+}
+
diff --git a/ReactiveUI.Winforms.Samples.Core.Bindings/Views/MainView.cs b/ReactiveUI.Winforms.Samples.Core.Bindings/Views/MainView.cs
new file mode 100644
index 0000000..e74abd7
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Bindings/Views/MainView.cs
@@ -0,0 +1,38 @@
+using ReactiveUI.Winforms.Samples.Core.Bindings.ViewModels;
+using System;
+using System.Windows.Forms;
+
+namespace ReactiveUI.Winforms.Samples.Core.Bindings.Views
+{
+ public partial class MainView : Form, IViewFor
+ {
+ public MainView()
+ {
+ InitializeComponent();
+
+ this.WhenActivated(d =>
+ {
+ // One way bind from viewmodel to view
+ d(this.OneWayBind(ViewModel, vm => vm.ApplicationTitle, v => v.Text));
+
+ // Two way bind for input (textbox) and one way bind for output (label)
+ d(this.Bind(ViewModel, vm => vm.ValueOne, v => v.tbInputOne.Text));
+ d(this.OneWayBind(ViewModel, vm => vm.ValueOne, v => v.lOutputOne.Text));
+
+ // Two way bind for input (textbox) with convert and one way bind for output (label)
+ d(this.Bind(ViewModel, vm => vm.ValueTwo, v => v.dtpInputTwo.Value, DateTime.FromFileTime, dt => dt.ToFileTime()));
+ d(this.OneWayBind(ViewModel, vm => vm.ValueTwo, v => v.lOutputTwo.Text));
+ });
+
+ ViewModel = new MainViewModel();
+ }
+
+ public MainViewModel ViewModel { get; set; }
+
+ object IViewFor.ViewModel
+ {
+ get => ViewModel;
+ set => ViewModel = (MainViewModel)value;
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Bindings/Views/MainView.resx b/ReactiveUI.Winforms.Samples.Core.Bindings/Views/MainView.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Bindings/Views/MainView.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Commands/Program.cs b/ReactiveUI.Winforms.Samples.Core.Commands/Program.cs
new file mode 100644
index 0000000..c07d6de
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Commands/Program.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Windows.Forms;
+
+namespace ReactiveUI.Winforms.Samples.Core.Commands
+{
+ internal static class Program
+ {
+ /// The main entry point for the application.
+ [STAThread]
+ private static void Main()
+ {
+ Application.SetHighDpiMode(HighDpiMode.SystemAware);
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new MainView());
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Commands/ReactiveUI.Winforms.Samples.Core.Commands.csproj b/ReactiveUI.Winforms.Samples.Core.Commands/ReactiveUI.Winforms.Samples.Core.Commands.csproj
new file mode 100644
index 0000000..def9391
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Commands/ReactiveUI.Winforms.Samples.Core.Commands.csproj
@@ -0,0 +1,20 @@
+
+
+
+ WinExe
+ net5.0-windows
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Commands/ViewModels/MainViewModel.cs b/ReactiveUI.Winforms.Samples.Core.Commands/ViewModels/MainViewModel.cs
new file mode 100644
index 0000000..153b889
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Commands/ViewModels/MainViewModel.cs
@@ -0,0 +1,58 @@
+using System.Reactive;
+using System.Reactive.Linq;
+using System.Windows;
+
+namespace ReactiveUI.Winforms.Samples.Core.Commands.ViewModels
+{
+ public class MainViewModel : ReactiveObject
+ {
+ private string _applicationTitle;
+ private string _withCanExecuteParameter;
+
+ public MainViewModel()
+ {
+ // Set properties
+ ApplicationTitle = "ReactiveUI Winforms Samples by Asesjix - Commands";
+ // Create parameterless command
+ ParameterlessCommand = ReactiveCommand.Create(Parameterless);
+ // Create command with parameter
+ WithParameterCommand = ReactiveCommand.Create(WithParameter);
+ // Create command with can execute
+ WithCanExecuteCommand = ReactiveCommand.Create(WithCanExecute,
+ this.WhenAnyValue(vm => vm.WithCanExecuteParameter).Select(s => string.IsNullOrEmpty(s) == false));
+ }
+
+ public string ApplicationTitle
+ {
+ get => _applicationTitle;
+ set => this.RaiseAndSetIfChanged(ref _applicationTitle, value);
+ }
+
+ public string WithCanExecuteParameter
+ {
+ get => _withCanExecuteParameter;
+ set => this.RaiseAndSetIfChanged(ref _withCanExecuteParameter, value);
+ }
+
+ public ReactiveCommand ParameterlessCommand { get; }
+
+ public ReactiveCommand WithParameterCommand { get; }
+
+ public ReactiveCommand WithCanExecuteCommand { get; }
+
+ private void Parameterless()
+ {
+ MessageBox.Show("You pressed the button!", ApplicationTitle, MessageBoxButton.OK);
+ }
+
+ private void WithParameter(string message)
+ {
+ MessageBox.Show(message, ApplicationTitle, MessageBoxButton.OK);
+ }
+
+ private void WithCanExecute()
+ {
+ MessageBox.Show(WithCanExecuteParameter, ApplicationTitle, MessageBoxButton.OK);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Commands/Views/MainView.Designer.cs b/ReactiveUI.Winforms.Samples.Core.Commands/Views/MainView.Designer.cs
new file mode 100644
index 0000000..f75416b
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Commands/Views/MainView.Designer.cs
@@ -0,0 +1,122 @@
+
+namespace ReactiveUI.Winforms.Samples.Core.Commands
+{
+ partial class MainView
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.tbWithCanExecuteParameter = new System.Windows.Forms.TextBox();
+ this.btParameterless = new System.Windows.Forms.Button();
+ this.btWithParameter = new System.Windows.Forms.Button();
+ this.tbParameter = new System.Windows.Forms.TextBox();
+ this.btWithCanExecute = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // tbWithCanExecuteParameter
+ //
+ this.tbWithCanExecuteParameter.Location = new System.Drawing.Point(225, 86);
+ this.tbWithCanExecuteParameter.Name = "tbWithCanExecuteParameter";
+ this.tbWithCanExecuteParameter.Size = new System.Drawing.Size(125, 27);
+ this.tbWithCanExecuteParameter.TabIndex = 0;
+ //
+ // btParameterless
+ //
+ this.btParameterless.AutoSize = true;
+ this.btParameterless.Location = new System.Drawing.Point(12, 12);
+ this.btParameterless.Name = "btParameterless";
+ this.btParameterless.Size = new System.Drawing.Size(183, 30);
+ this.btParameterless.TabIndex = 1;
+ this.btParameterless.Text = "Parameterless Command";
+ this.btParameterless.UseVisualStyleBackColor = true;
+ //
+ // btWithParameter
+ //
+ this.btWithParameter.AutoSize = true;
+ this.btWithParameter.Location = new System.Drawing.Point(12, 48);
+ this.btWithParameter.Name = "btWithParameter";
+ this.btWithParameter.Size = new System.Drawing.Size(194, 30);
+ this.btWithParameter.TabIndex = 2;
+ this.btWithParameter.Text = "With Parameter Command";
+ this.btWithParameter.UseVisualStyleBackColor = true;
+ //
+ // tbParameter
+ //
+ this.tbParameter.Location = new System.Drawing.Point(225, 48);
+ this.tbParameter.Name = "tbParameter";
+ this.tbParameter.Size = new System.Drawing.Size(125, 27);
+ this.tbParameter.TabIndex = 3;
+ this.tbParameter.Text = "The parameter";
+ //
+ // btWithCanExecute
+ //
+ this.btWithCanExecute.AutoSize = true;
+ this.btWithCanExecute.Location = new System.Drawing.Point(12, 84);
+ this.btWithCanExecute.Name = "btWithCanExecute";
+ this.btWithCanExecute.Size = new System.Drawing.Size(207, 30);
+ this.btWithCanExecute.TabIndex = 4;
+ this.btWithCanExecute.Text = "With Can Execute Command";
+ this.btWithCanExecute.UseVisualStyleBackColor = true;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(356, 89);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(69, 20);
+ this.label1.TabIndex = 5;
+ this.label1.Text = "Required";
+ //
+ // MainView
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(800, 450);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.btWithCanExecute);
+ this.Controls.Add(this.tbParameter);
+ this.Controls.Add(this.btWithParameter);
+ this.Controls.Add(this.btParameterless);
+ this.Controls.Add(this.tbWithCanExecuteParameter);
+ this.Name = "MainView";
+ this.Text = "MainView";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox tbWithCanExecuteParameter;
+ private System.Windows.Forms.Button btParameterless;
+ private System.Windows.Forms.Button btWithParameter;
+ private System.Windows.Forms.TextBox tbParameter;
+ private System.Windows.Forms.Button btWithCanExecute;
+ private System.Windows.Forms.Label label1;
+ }
+}
+
diff --git a/ReactiveUI.Winforms.Samples.Core.Commands/Views/MainView.cs b/ReactiveUI.Winforms.Samples.Core.Commands/Views/MainView.cs
new file mode 100644
index 0000000..1e037ea
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Commands/Views/MainView.cs
@@ -0,0 +1,38 @@
+using ReactiveUI.Winforms.Samples.Core.Commands.ViewModels;
+using System.Windows.Forms;
+
+namespace ReactiveUI.Winforms.Samples.Core.Commands
+{
+ public partial class MainView : Form, IViewFor
+ {
+ public MainView()
+ {
+ InitializeComponent();
+
+ this.WhenActivated(d =>
+ {
+ // Bind properties
+ d(this.OneWayBind(ViewModel, vm => vm.ApplicationTitle, v => v.Text));
+ // Bind property for command with can execute
+ d(this.Bind(ViewModel, vm => vm.WithCanExecuteParameter, v => v.tbWithCanExecuteParameter.Text));
+
+ // Bind parameterless command
+ d(this.BindCommand(ViewModel, vm => vm.ParameterlessCommand, v => v.btParameterless));
+ // Bind command with parameter
+ d(this.BindCommand(ViewModel, vm => vm.WithParameterCommand, v => v.btWithParameter, this.WhenAnyValue(v => v.tbParameter.Text)));
+ // Bind command with can execute
+ d(this.BindCommand(ViewModel, vm => vm.WithCanExecuteCommand, v => v.btWithCanExecute));
+ });
+
+ ViewModel = new MainViewModel();
+ }
+
+ public MainViewModel ViewModel { get; set; }
+
+ object IViewFor.ViewModel
+ {
+ get => ViewModel;
+ set => ViewModel = (MainViewModel)value;
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Commands/Views/MainView.resx b/ReactiveUI.Winforms.Samples.Core.Commands/Views/MainView.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Commands/Views/MainView.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Bootstrapper.cs b/ReactiveUI.Winforms.Samples.Core.Routing/Bootstrapper.cs
new file mode 100644
index 0000000..6f3a6d5
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Bootstrapper.cs
@@ -0,0 +1,36 @@
+using ReactiveUI.Winforms.Samples.Core.Routing.ViewModels;
+using ReactiveUI.Winforms.Samples.Core.Routing.Views;
+using Splat;
+using System.Windows.Forms;
+
+namespace ReactiveUI.Winforms.Samples.Core.Routing
+{
+ public class Bootstrapper
+ {
+ public Bootstrapper()
+ {
+ ConfigureServices();
+ }
+
+ private void ConfigureServices()
+ {
+ // Register views
+ Locator.CurrentMutable.Register(() => new ShellView(), typeof(IViewFor));
+ Locator.CurrentMutable.Register(() => new HomeView(), typeof(IViewFor));
+ Locator.CurrentMutable.Register(() => new AboutView(), typeof(IViewFor));
+ Locator.CurrentMutable.Register(() => new ContactView(), typeof(IViewFor));
+ }
+
+ public void Run()
+ {
+ // Create ShellViewModel and register as IScreen
+ var viewModel = new ShellViewModel();
+ Locator.CurrentMutable.RegisterConstant(viewModel, typeof(IScreen));
+ // Resolve view for ShellViewModel
+ var view = ViewLocator.Current.ResolveView(viewModel);
+ view.ViewModel = viewModel;
+ // Run application
+ Application.Run((Form)view);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Program.cs b/ReactiveUI.Winforms.Samples.Core.Routing/Program.cs
new file mode 100644
index 0000000..275b7c2
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Program.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Windows.Forms;
+
+namespace ReactiveUI.Winforms.Samples.Core.Routing
+{
+ internal static class Program
+ {
+ /// The main entry point for the application.
+ [STAThread]
+ private static void Main()
+ {
+ Application.SetHighDpiMode(HighDpiMode.SystemAware);
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+
+ // Create and run Bootstrapper
+ var bootstrapper = new Bootstrapper();
+ bootstrapper.Run();
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/ReactiveUI.Winforms.Samples.Core.Routing.csproj b/ReactiveUI.Winforms.Samples.Core.Routing/ReactiveUI.Winforms.Samples.Core.Routing.csproj
new file mode 100644
index 0000000..a90d13b
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/ReactiveUI.Winforms.Samples.Core.Routing.csproj
@@ -0,0 +1,14 @@
+
+
+
+ WinExe
+ net5.0-windows
+ true
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/ViewModels/AboutViewModel.cs b/ReactiveUI.Winforms.Samples.Core.Routing/ViewModels/AboutViewModel.cs
new file mode 100644
index 0000000..7634ddd
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/ViewModels/AboutViewModel.cs
@@ -0,0 +1,22 @@
+namespace ReactiveUI.Winforms.Samples.Core.Routing.ViewModels
+{
+ public class AboutViewModel : ReactiveObject, IRoutableViewModel
+ {
+ private string _viewTitle;
+
+ public AboutViewModel()
+ {
+ ViewTitle = "About View";
+ }
+
+ public string ViewTitle
+ {
+ get => _viewTitle;
+ set => this.RaiseAndSetIfChanged(ref _viewTitle, value);
+ }
+
+ public IScreen HostScreen { get; protected set; }
+
+ public string UrlPathSegment { get; protected set; }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/ViewModels/ContactViewModel.cs b/ReactiveUI.Winforms.Samples.Core.Routing/ViewModels/ContactViewModel.cs
new file mode 100644
index 0000000..2f295ac
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/ViewModels/ContactViewModel.cs
@@ -0,0 +1,22 @@
+namespace ReactiveUI.Winforms.Samples.Core.Routing.ViewModels
+{
+ public class ContactViewModel : ReactiveObject, IRoutableViewModel
+ {
+ private string _viewTitle;
+
+ public ContactViewModel()
+ {
+ ViewTitle = "Contact View";
+ }
+
+ public string ViewTitle
+ {
+ get => _viewTitle;
+ set => this.RaiseAndSetIfChanged(ref _viewTitle, value);
+ }
+
+ public IScreen HostScreen { get; protected set; }
+
+ public string UrlPathSegment { get; protected set; }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/ViewModels/HomeViewModel.cs b/ReactiveUI.Winforms.Samples.Core.Routing/ViewModels/HomeViewModel.cs
new file mode 100644
index 0000000..7a63e32
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/ViewModels/HomeViewModel.cs
@@ -0,0 +1,22 @@
+namespace ReactiveUI.Winforms.Samples.Core.Routing.ViewModels
+{
+ public class HomeViewModel : ReactiveObject, IRoutableViewModel
+ {
+ private string _viewTitle;
+
+ public HomeViewModel()
+ {
+ ViewTitle = "Home View";
+ }
+
+ public string ViewTitle
+ {
+ get => _viewTitle;
+ set => this.RaiseAndSetIfChanged(ref _viewTitle, value);
+ }
+
+ public IScreen HostScreen { get; protected set; }
+
+ public string UrlPathSegment { get; protected set; }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/ViewModels/ShellViewModel.cs b/ReactiveUI.Winforms.Samples.Core.Routing/ViewModels/ShellViewModel.cs
new file mode 100644
index 0000000..f154d72
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/ViewModels/ShellViewModel.cs
@@ -0,0 +1,85 @@
+using System;
+using System.Reactive;
+
+namespace ReactiveUI.Winforms.Samples.Core.Routing.ViewModels
+{
+ public class ShellViewModel : ReactiveObject, IScreen
+ {
+ private string _applicationTitle;
+
+ public ShellViewModel()
+ {
+ // Create router for IScreen
+ Router = new RoutingState();
+ // Set properties
+ ApplicationTitle = "ReactiveUI Winforms Samples by Asesjix - Routing";
+ // Create commands
+ ShowHomeCommand = ReactiveCommand.Create(ShowHome);
+ ShowAboutCommand = ReactiveCommand.Create(ShowAbout);
+ ShowContactCommand = ReactiveCommand.Create(ShowContact);
+ GoBackCommand = ReactiveCommand.Create(GoBack, Router.NavigateBack.CanExecute);
+ // Navigate to HomeViewModel and reset NavigationStack (shows HomeView at application start)
+ Router
+ .NavigateAndReset
+ .Execute(new HomeViewModel())
+ .Subscribe();
+ }
+
+ public RoutingState Router { get; }
+
+ public string ApplicationTitle
+ {
+ get => _applicationTitle;
+ set => this.RaiseAndSetIfChanged(ref _applicationTitle, value);
+ }
+
+ public ReactiveCommand ShowHomeCommand { get; }
+
+ public ReactiveCommand ShowAboutCommand { get; }
+
+ public ReactiveCommand ShowContactCommand { get; }
+
+ public ReactiveCommand GoBackCommand { get; }
+
+ private void ShowHome()
+ {
+ // Navigate to HomeViewModel
+ Router
+ .Navigate
+ .Execute(new HomeViewModel())
+ .Subscribe();
+ }
+
+ private void ShowAbout()
+ {
+ // Navigate to AboutViewModel
+ Router
+ .Navigate
+ .Execute(new AboutViewModel())
+ .Subscribe();
+ }
+
+ private void ShowContact()
+ {
+ // Navigate to ContactViewModel
+ Router
+ .Navigate
+ .Execute(new ContactViewModel())
+ .Subscribe();
+ }
+
+ private void GoBack()
+ {
+ // Navigate back in NavigationStack
+ // Note: You have to check the count to prevent an ArgumentOutOfRangeException or
+ // navigate to empty
+ if (Router.NavigationStack.Count > 0)
+ {
+ Router
+ .NavigateBack
+ .Execute()
+ .Subscribe();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Views/AboutView.Designer.cs b/ReactiveUI.Winforms.Samples.Core.Routing/Views/AboutView.Designer.cs
new file mode 100644
index 0000000..a8af6b5
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Views/AboutView.Designer.cs
@@ -0,0 +1,61 @@
+
+namespace ReactiveUI.Winforms.Samples.Core.Routing.Views
+{
+ partial class AboutView
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Component Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.lViewTitle = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // lViewTitle
+ //
+ this.lViewTitle.AutoSize = true;
+ this.lViewTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.lViewTitle.Location = new System.Drawing.Point(4, 16);
+ this.lViewTitle.Name = "lViewTitle";
+ this.lViewTitle.Size = new System.Drawing.Size(152, 31);
+ this.lViewTitle.TabIndex = 0;
+ this.lViewTitle.Text = "View Name";
+ //
+ // AboutView
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.lViewTitle);
+ this.Name = "AboutView";
+ this.Size = new System.Drawing.Size(652, 402);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label lViewTitle;
+ }
+}
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Views/AboutView.cs b/ReactiveUI.Winforms.Samples.Core.Routing/Views/AboutView.cs
new file mode 100644
index 0000000..6abc0cb
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Views/AboutView.cs
@@ -0,0 +1,26 @@
+using ReactiveUI.Winforms.Samples.Core.Routing.ViewModels;
+using System.Windows.Forms;
+
+namespace ReactiveUI.Winforms.Samples.Core.Routing.Views
+{
+ public partial class AboutView : UserControl, IViewFor
+ {
+ public AboutView()
+ {
+ InitializeComponent();
+
+ this.WhenActivated(d =>
+ {
+ d(this.OneWayBind(ViewModel, vm => vm.ViewTitle, v => v.lViewTitle.Text));
+ });
+ }
+
+ public AboutViewModel ViewModel { get; set; }
+
+ object IViewFor.ViewModel
+ {
+ get => ViewModel;
+ set => ViewModel = (AboutViewModel)value;
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Views/AboutView.resx b/ReactiveUI.Winforms.Samples.Core.Routing/Views/AboutView.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Views/AboutView.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Views/ContactView.Designer.cs b/ReactiveUI.Winforms.Samples.Core.Routing/Views/ContactView.Designer.cs
new file mode 100644
index 0000000..90c5965
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Views/ContactView.Designer.cs
@@ -0,0 +1,61 @@
+
+namespace ReactiveUI.Winforms.Samples.Core.Routing.Views
+{
+ partial class ContactView
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Component Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.lViewTitle = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // lViewTitle
+ //
+ this.lViewTitle.AutoSize = true;
+ this.lViewTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.lViewTitle.Location = new System.Drawing.Point(4, 14);
+ this.lViewTitle.Name = "lViewTitle";
+ this.lViewTitle.Size = new System.Drawing.Size(152, 31);
+ this.lViewTitle.TabIndex = 0;
+ this.lViewTitle.Text = "View Name";
+ //
+ // ContactView
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.lViewTitle);
+ this.Name = "ContactView";
+ this.Size = new System.Drawing.Size(892, 406);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label lViewTitle;
+ }
+}
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Views/ContactView.cs b/ReactiveUI.Winforms.Samples.Core.Routing/Views/ContactView.cs
new file mode 100644
index 0000000..5620afd
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Views/ContactView.cs
@@ -0,0 +1,26 @@
+using ReactiveUI.Winforms.Samples.Core.Routing.ViewModels;
+using System.Windows.Forms;
+
+namespace ReactiveUI.Winforms.Samples.Core.Routing.Views
+{
+ public partial class ContactView : UserControl, IViewFor
+ {
+ public ContactView()
+ {
+ InitializeComponent();
+
+ this.WhenActivated(d =>
+ {
+ d(this.OneWayBind(ViewModel, vm => vm.ViewTitle, v => v.lViewTitle.Text));
+ });
+ }
+
+ public ContactViewModel ViewModel { get; set; }
+
+ object IViewFor.ViewModel
+ {
+ get => ViewModel;
+ set => ViewModel = (ContactViewModel)value;
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Views/ContactView.resx b/ReactiveUI.Winforms.Samples.Core.Routing/Views/ContactView.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Views/ContactView.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Views/HomeView.Designer.cs b/ReactiveUI.Winforms.Samples.Core.Routing/Views/HomeView.Designer.cs
new file mode 100644
index 0000000..627e0a1
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Views/HomeView.Designer.cs
@@ -0,0 +1,61 @@
+
+namespace ReactiveUI.Winforms.Samples.Core.Routing.Views
+{
+ partial class HomeView
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Component Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.lViewTitle = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // lViewTitle
+ //
+ this.lViewTitle.AutoSize = true;
+ this.lViewTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ this.lViewTitle.Location = new System.Drawing.Point(4, 12);
+ this.lViewTitle.Name = "lViewTitle";
+ this.lViewTitle.Size = new System.Drawing.Size(152, 31);
+ this.lViewTitle.TabIndex = 0;
+ this.lViewTitle.Text = "View Name";
+ //
+ // HomeView
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.lViewTitle);
+ this.Name = "HomeView";
+ this.Size = new System.Drawing.Size(888, 503);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label lViewTitle;
+ }
+}
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Views/HomeView.cs b/ReactiveUI.Winforms.Samples.Core.Routing/Views/HomeView.cs
new file mode 100644
index 0000000..49d4d9e
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Views/HomeView.cs
@@ -0,0 +1,26 @@
+using ReactiveUI.Winforms.Samples.Core.Routing.ViewModels;
+using System.Windows.Forms;
+
+namespace ReactiveUI.Winforms.Samples.Core.Routing.Views
+{
+ public partial class HomeView : UserControl, IViewFor
+ {
+ public HomeView()
+ {
+ InitializeComponent();
+
+ this.WhenActivated(d =>
+ {
+ d(this.OneWayBind(ViewModel, vm => vm.ViewTitle, v => v.lViewTitle.Text));
+ });
+ }
+
+ public HomeViewModel ViewModel { get; set; }
+
+ object IViewFor.ViewModel
+ {
+ get => ViewModel;
+ set => ViewModel = (HomeViewModel)value;
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Views/HomeView.resx b/ReactiveUI.Winforms.Samples.Core.Routing/Views/HomeView.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Views/HomeView.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Views/ShellView.Designer.cs b/ReactiveUI.Winforms.Samples.Core.Routing/Views/ShellView.Designer.cs
new file mode 100644
index 0000000..179f363
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Views/ShellView.Designer.cs
@@ -0,0 +1,115 @@
+
+namespace ReactiveUI.Winforms.Samples.Core.Routing
+{
+ partial class ShellView
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.routedControlHost = new ReactiveUI.Winforms.RoutedControlHost();
+ this.btHome = new System.Windows.Forms.Button();
+ this.btAbout = new System.Windows.Forms.Button();
+ this.btContact = new System.Windows.Forms.Button();
+ this.btGoBack = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // routedControlHost
+ //
+ this.routedControlHost.DefaultContent = null;
+ this.routedControlHost.Location = new System.Drawing.Point(4, 68);
+ this.routedControlHost.Name = "routedControlHost";
+ this.routedControlHost.Router = null;
+ this.routedControlHost.Size = new System.Drawing.Size(1059, 482);
+ this.routedControlHost.TabIndex = 0;
+ this.routedControlHost.ViewLocator = null;
+ //
+ // btHome
+ //
+ this.btHome.AutoSize = true;
+ this.btHome.Location = new System.Drawing.Point(12, 12);
+ this.btHome.Name = "btHome";
+ this.btHome.Size = new System.Drawing.Size(100, 30);
+ this.btHome.TabIndex = 1;
+ this.btHome.Text = "Show Home";
+ this.btHome.UseVisualStyleBackColor = true;
+ //
+ // btAbout
+ //
+ this.btAbout.AutoSize = true;
+ this.btAbout.Location = new System.Drawing.Point(118, 12);
+ this.btAbout.Name = "btAbout";
+ this.btAbout.Size = new System.Drawing.Size(100, 30);
+ this.btAbout.TabIndex = 1;
+ this.btAbout.Text = "Show About";
+ this.btAbout.UseVisualStyleBackColor = true;
+ //
+ // btContact
+ //
+ this.btContact.AutoSize = true;
+ this.btContact.Location = new System.Drawing.Point(224, 12);
+ this.btContact.Name = "btContact";
+ this.btContact.Size = new System.Drawing.Size(110, 30);
+ this.btContact.TabIndex = 1;
+ this.btContact.Text = "Show Contact";
+ this.btContact.UseVisualStyleBackColor = true;
+ //
+ // btGoBack
+ //
+ this.btGoBack.AutoSize = true;
+ this.btGoBack.Location = new System.Drawing.Point(340, 12);
+ this.btGoBack.Name = "btGoBack";
+ this.btGoBack.Size = new System.Drawing.Size(94, 30);
+ this.btGoBack.TabIndex = 1;
+ this.btGoBack.Text = "Go Back";
+ this.btGoBack.UseVisualStyleBackColor = true;
+ //
+ // ShellView
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1067, 554);
+ this.Controls.Add(this.btGoBack);
+ this.Controls.Add(this.btContact);
+ this.Controls.Add(this.btAbout);
+ this.Controls.Add(this.btHome);
+ this.Controls.Add(this.routedControlHost);
+ this.Name = "ShellView";
+ this.Text = "Form1";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private RoutedControlHost routedControlHost;
+ private System.Windows.Forms.Button btHome;
+ private System.Windows.Forms.Button btAbout;
+ private System.Windows.Forms.Button btContact;
+ private System.Windows.Forms.Button btGoBack;
+ }
+}
+
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Views/ShellView.cs b/ReactiveUI.Winforms.Samples.Core.Routing/Views/ShellView.cs
new file mode 100644
index 0000000..c423f24
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Views/ShellView.cs
@@ -0,0 +1,36 @@
+using ReactiveUI.Winforms.Samples.Core.Routing.ViewModels;
+using System.Windows.Forms;
+
+namespace ReactiveUI.Winforms.Samples.Core.Routing
+{
+ public partial class ShellView : Form, IViewFor
+ {
+ public ShellView()
+ {
+ InitializeComponent();
+
+ this.WhenActivated(b =>
+ {
+ // Bind router
+ b(this.OneWayBind(ViewModel, vm => vm.Router, v => v.routedControlHost.Router));
+
+ // Bind properties
+ b(this.OneWayBind(ViewModel, vm => vm.ApplicationTitle, v => v.Text));
+
+ // Bind commands
+ b(this.BindCommand(ViewModel, vm => vm.ShowHomeCommand, v => v.btHome));
+ b(this.BindCommand(ViewModel, vm => vm.ShowAboutCommand, v => v.btAbout));
+ b(this.BindCommand(ViewModel, vm => vm.ShowContactCommand, v => v.btContact));
+ b(this.BindCommand(ViewModel, vm => vm.GoBackCommand, v => v.btGoBack));
+ });
+ }
+
+ public ShellViewModel ViewModel { get; set; }
+
+ object IViewFor.ViewModel
+ {
+ get => ViewModel;
+ set => ViewModel = (ShellViewModel)value;
+ }
+ }
+}
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Core.Routing/Views/ShellView.resx b/ReactiveUI.Winforms.Samples.Core.Routing/Views/ShellView.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/ReactiveUI.Winforms.Samples.Core.Routing/Views/ShellView.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.Routing/App.config b/ReactiveUI.Winforms.Samples.Routing/App.config
index 7fa5b2d..63de8b3 100644
--- a/ReactiveUI.Winforms.Samples.Routing/App.config
+++ b/ReactiveUI.Winforms.Samples.Routing/App.config
@@ -1,7 +1,7 @@
-
+
@@ -9,6 +9,10 @@
+
+
+
+
-
\ No newline at end of file
+
diff --git a/ReactiveUI.Winforms.Samples.Routing/Properties/Resources.Designer.cs b/ReactiveUI.Winforms.Samples.Routing/Properties/Resources.Designer.cs
index 1ed45a8..3dce100 100644
--- a/ReactiveUI.Winforms.Samples.Routing/Properties/Resources.Designer.cs
+++ b/ReactiveUI.Winforms.Samples.Routing/Properties/Resources.Designer.cs
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
//
-// Dieser Code wurde von einem Tool generiert.
-// Laufzeitversion:4.0.30319.42000
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
//
-// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
-// der Code erneut generiert wird.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
//
//------------------------------------------------------------------------------
@@ -13,13 +13,13 @@ namespace ReactiveUI.Winforms.Samples.Routing.Properties {
///
- /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+ /// A strongly-typed resource class, for looking up localized strings, etc.
///
- // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
- // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
- // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
- // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
+ // 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.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
@@ -33,7 +33,7 @@ internal Resources() {
}
///
- /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+ /// Returns the cached ResourceManager instance used by this class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
@@ -47,8 +47,8 @@ internal Resources() {
}
///
- /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
- /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
diff --git a/ReactiveUI.Winforms.Samples.Routing/Properties/Settings.Designer.cs b/ReactiveUI.Winforms.Samples.Routing/Properties/Settings.Designer.cs
index 9cd50e7..8d0da4d 100644
--- a/ReactiveUI.Winforms.Samples.Routing/Properties/Settings.Designer.cs
+++ b/ReactiveUI.Winforms.Samples.Routing/Properties/Settings.Designer.cs
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
//
-// Dieser Code wurde von einem Tool generiert.
-// Laufzeitversion:4.0.30319.42000
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
//
-// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
-// der Code erneut generiert wird.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
//
//------------------------------------------------------------------------------
@@ -12,7 +12,7 @@ namespace ReactiveUI.Winforms.Samples.Routing.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.6.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
diff --git a/ReactiveUI.Winforms.Samples.Routing/ReactiveUI.Winforms.Samples.Routing.csproj b/ReactiveUI.Winforms.Samples.Routing/ReactiveUI.Winforms.Samples.Routing.csproj
index c30f786..433235e 100644
--- a/ReactiveUI.Winforms.Samples.Routing/ReactiveUI.Winforms.Samples.Routing.csproj
+++ b/ReactiveUI.Winforms.Samples.Routing/ReactiveUI.Winforms.Samples.Routing.csproj
@@ -8,9 +8,10 @@
WinExe
ReactiveUI.Winforms.Samples.Routing
ReactiveUI.Winforms.Samples.Routing
- v4.6.1
+ v4.8
512
true
+
AnyCPU
@@ -35,16 +36,19 @@
ReactiveUI.Winforms.Samples.Routing.Program
+
+ ..\packages\DynamicData.7.2.1\lib\net461\DynamicData.dll
+
-
- ..\packages\ReactiveUI.8.0.1\lib\net461\ReactiveUI.dll
+
+ ..\packages\ReactiveUI.14.1.1\lib\net472\ReactiveUI.dll
-
- ..\packages\ReactiveUI.WinForms.8.0.1\lib\net461\ReactiveUI.Winforms.dll
+
+ ..\packages\ReactiveUI.WinForms.14.1.1\lib\net48\ReactiveUI.Winforms.dll
-
- ..\packages\Splat.4.0.0\lib\net461\Splat.dll
+
+ ..\packages\Splat.11.1.1\lib\net472\Splat.dll
@@ -52,20 +56,29 @@
..\packages\System.Drawing.Primitives.4.3.0\lib\net45\System.Drawing.Primitives.dll
-
- ..\packages\System.Reactive.Core.3.1.1\lib\net46\System.Reactive.Core.dll
+
+ ..\packages\System.Reactive.5.0.0\lib\net472\System.Reactive.dll
+
+
+ ..\packages\System.Reactive.Core.5.0.0\lib\net472\System.Reactive.Core.dll
+
+
+ ..\packages\System.Reactive.Interfaces.5.0.0\lib\net472\System.Reactive.Interfaces.dll
+
+
+ ..\packages\System.Reactive.Linq.5.0.0\lib\net472\System.Reactive.Linq.dll
-
- ..\packages\System.Reactive.Interfaces.3.1.1\lib\net45\System.Reactive.Interfaces.dll
+
+ ..\packages\System.Reactive.PlatformServices.5.0.0\lib\net472\System.Reactive.PlatformServices.dll
-
- ..\packages\System.Reactive.Linq.3.1.1\lib\net46\System.Reactive.Linq.dll
+
+ ..\packages\System.Reactive.Windows.Threading.5.0.0\lib\net472\System.Reactive.Windows.Threading.dll
-
- ..\packages\System.Reactive.PlatformServices.3.1.1\lib\net46\System.Reactive.PlatformServices.dll
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll
-
- ..\packages\System.Reactive.Windows.Threading.3.1.1\lib\net45\System.Reactive.Windows.Threading.dll
+
+ ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll
diff --git a/ReactiveUI.Winforms.Samples.Routing/packages.config b/ReactiveUI.Winforms.Samples.Routing/packages.config
index 60139cd..07aaabc 100644
--- a/ReactiveUI.Winforms.Samples.Routing/packages.config
+++ b/ReactiveUI.Winforms.Samples.Routing/packages.config
@@ -1,13 +1,16 @@
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ReactiveUI.Winforms.Samples.sln b/ReactiveUI.Winforms.Samples.sln
index a314727..5c80f2a 100644
--- a/ReactiveUI.Winforms.Samples.sln
+++ b/ReactiveUI.Winforms.Samples.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27428.2037
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31424.327
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReactiveUI.Winforms.Samples.Routing", "ReactiveUI.Winforms.Samples.Routing\ReactiveUI.Winforms.Samples.Routing.csproj", "{E72F085F-4227-4563-A3AD-07A630239DF5}"
EndProject
@@ -9,6 +9,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReactiveUI.Winforms.Samples
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReactiveUI.Winforms.Samples.Bindings", "ReactiveUI.Winforms.Samples.Bindings\ReactiveUI.Winforms.Samples.Bindings.csproj", "{16AEBB87-DDC5-444C-B22F-EF9E89835EF0}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUI.Winforms.Samples.Core.Bindings", "ReactiveUI.Winforms.Samples.Core.Bindings\ReactiveUI.Winforms.Samples.Core.Bindings.csproj", "{B93DEA41-CC0B-44F8-8751-C355F49B2204}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUI.Winforms.Samples.Core.Commands", "ReactiveUI.Winforms.Samples.Core.Commands\ReactiveUI.Winforms.Samples.Core.Commands.csproj", "{9CB03C6E-9363-42AA-9F40-98D70B2116D6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUI.Winforms.Samples.Core.Routing", "ReactiveUI.Winforms.Samples.Core.Routing\ReactiveUI.Winforms.Samples.Core.Routing.csproj", "{74844149-DF5A-44E4-8B39-09A5474EFFC5}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -27,6 +33,18 @@ Global
{16AEBB87-DDC5-444C-B22F-EF9E89835EF0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{16AEBB87-DDC5-444C-B22F-EF9E89835EF0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{16AEBB87-DDC5-444C-B22F-EF9E89835EF0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B93DEA41-CC0B-44F8-8751-C355F49B2204}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B93DEA41-CC0B-44F8-8751-C355F49B2204}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B93DEA41-CC0B-44F8-8751-C355F49B2204}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B93DEA41-CC0B-44F8-8751-C355F49B2204}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9CB03C6E-9363-42AA-9F40-98D70B2116D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9CB03C6E-9363-42AA-9F40-98D70B2116D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9CB03C6E-9363-42AA-9F40-98D70B2116D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9CB03C6E-9363-42AA-9F40-98D70B2116D6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {74844149-DF5A-44E4-8B39-09A5474EFFC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {74844149-DF5A-44E4-8B39-09A5474EFFC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {74844149-DF5A-44E4-8B39-09A5474EFFC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {74844149-DF5A-44E4-8B39-09A5474EFFC5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE