diff --git a/samples/XamlTestApplicationPcl/ViewModels/EditorViewModel.cs b/samples/XamlTestApplicationPcl/ViewModels/EditorViewModel.cs index 91ce6fb620..4623a14275 100644 --- a/samples/XamlTestApplicationPcl/ViewModels/EditorViewModel.cs +++ b/samples/XamlTestApplicationPcl/ViewModels/EditorViewModel.cs @@ -1,4 +1,6 @@ -namespace XamlTestApplication.ViewModels +using Perspex.Threading; + +namespace XamlTestApplication.ViewModels { using ReactiveUI; using System; @@ -19,6 +21,12 @@ { Documents.Add(new EditorViewModel()); }); + + GCCommand = ReactiveCommand.Create(); + GCCommand.Subscribe(_ => + { + GC.Collect(); + }); } public static ShellViewModel Instance = new ShellViewModel(); @@ -38,14 +46,28 @@ set { this.RaiseAndSetIfChanged(ref selectedDocument, value); } } + private int instanceCount; + + public int InstanceCount + { + get { return instanceCount; } + set { this.RaiseAndSetIfChanged(ref instanceCount, value); } + } + + public ReactiveCommand AddDocumentCommand { get; } + public ReactiveCommand GCCommand { get; } } public class EditorViewModel : ReactiveObject { + private static int InstanceCount = 0; + public EditorViewModel() { + InstanceCount++; + ShellViewModel.Instance.InstanceCount = InstanceCount; text = "This is some text."; CloseCommand = ReactiveCommand.Create(); @@ -58,6 +80,14 @@ ~EditorViewModel() { + + + //System.Console.WriteLine("EVM Destructed"); + InstanceCount--; + Dispatcher.UIThread.InvokeAsync(() => + { + ShellViewModel.Instance.InstanceCount = InstanceCount; + }); } diff --git a/samples/XamlTestApplicationPcl/Views/MainWindow.xaml b/samples/XamlTestApplicationPcl/Views/MainWindow.xaml index 8da066ac26..594f27bc41 100644 --- a/samples/XamlTestApplicationPcl/Views/MainWindow.xaml +++ b/samples/XamlTestApplicationPcl/Views/MainWindow.xaml @@ -381,7 +381,8 @@