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