CrissCross.WinForms 2.0.6

dotnet add package CrissCross.WinForms --version 2.0.6                
NuGet\Install-Package CrissCross.WinForms -Version 2.0.6                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块版本的 Install-Package.
<PackageReference Include="CrissCross.WinForms" Version="2.0.6" />                
对于支持 PackageReference 的项目,将此 XML 节复制到项目文件中以引用该包。
paket add CrissCross.WinForms --version 2.0.6                
#r "nuget: CrissCross.WinForms, 2.0.6"                
#r 指令可以在 F# Interactive 和 Polyglot Notebooks 中使用。将此内容复制到交互式工具或脚本的源代码中以引用包。
// Install CrissCross.WinForms as a Cake Addin
#addin nuget:?package=CrissCross.WinForms&version=2.0.6

// Install CrissCross.WinForms as a Cake Tool
#tool nuget:?package=CrissCross.WinForms&version=2.0.6                

CrissCross

基于 ReactiveUI 的项目的导航框架

Alt

CrissCross

CrissCross CI-Build

什么是 CrissCross?

CrissCross 是一个用于基于 ReactiveUI 项目的导航框架。它旨在与 ReactiveUI 一起使用,但也可以适配用于任何 MVVM 框架。

为何使用 CrissCross?

CrissCross 设计为一个简单、轻量级、易于使用的导航框架。它专为与 ReactiveUI 一起使用而设计。

如何使用 CrissCross?

步骤 1: 安装 CrissCross

CrissCross 可在 NuGet 上找到。您可以使用 NuGet 包管理器安装它

Nuget Nuget

Install-Package CrissCross

Nuget Nuget

Install-Package CrissCross.WPF

Nuget Nuget

Install-Package CrissCross.XamForms

Nuget Nuget

Install-Package CrissCross.MAUI

Nuget Nuget

Install-Package CrissCross.Avalonia

或者 Nuget Nuget

Install-Package CrissCross.WinForms

第 2 步:创建 ViewModel

创建一个继承自 RxObject 的 ViewModel。这是用于 MainWindow 的 ViewModel。

    public class MainWindowViewModel : RxObject
    {
        public MainWindowViewModel()
        {
            this.BuildComplete(() =>
            {
                // Do something when the IOC Container is built
            });

            // Setup the IOC Container
            Locator.CurrentMutable.RegisterConstant<MainViewModel>(new());
            Locator.CurrentMutable.Register<IViewFor<MainViewModel>>(() => new MainView());

            Locator.CurrentMutable.RegisterConstant<FirstViewModel>(new());
            Locator.CurrentMutable.Register<IViewFor<FirstViewModel>>(() => new FirstView());
            
            // Notify the application that the IOC Container that it is complete and ready to use.
            Locator.CurrentMutable.SetupComplete();
        }
    }

第 3 步:创建 View

创建一个继承自 NavigationWindow 的 View。这是用于 MainWindow 的 View。在 XAML 的 Window 继承处添加 xmlns:rxNav="https://github.com/reactivemarbles/CrissCross"。将 Window 在 XAML 中改为 rxNav:NavigationWindow。在 XAML 中添加 x:TypeArguments="local:MainWindowViewModel"。

    public partial class MainWindow : NavigationWindow<MainWindowViewModel>
    {
        public MainWindow()
        {
            // Remember to set x:Name in XAML to "mainWindow"
            InitializeComponent();
            
            this.WhenActivated(disposables =>
            {
                // Do something when the View is activated

                // Configure the Navigation for the MainWindow
                NavBack.Command = ReactiveCommand.Create(() => this.NavigateBack(), CanNavigateBack).DisposeWith(d);
                
                // Navigate to the MainViewModel
                this.NavigateToView<MainViewModel>();
            });
        }
    }

第 4 步:创建 ViewModel

创建一个继承自 RxObject 的 ViewModel。这是用于 MainView 的 ViewModel。

    public class MainViewModel : RxObject
    {
        public MainViewModel()
        {
            this.BuildComplete(() =>
            {
                // Do something when the IOC Container is built

                // Configure the Navigation for the MainViewModel using, you will pass the name of the Navigation Host Window that you want to navigate with.
                this.NavigateBack("mainWindow")
                this.CanNavigateBack("mainWindow")
                this.NavigateToView<FirstViewModel>("mainWindow")
            });
        }
    }

第 5 步:创建 View

创建一个继承自 ReactiveUserControl 的 View。这是用于 MainView 的 View。

    public partial class MainView : ReactiveUserControl<MainViewModel>
    {
        public MainView()
        {
            InitializeComponent();

            this.WhenActivated(disposables =>
            {
                // Do something when the View is activated
            });
        }
    }

第 6 步:如果需要,为 WPF 应用配置单实例应用程序

如果您想防止应用程序在同时运行多个实例,可以使用 Make.SingleInstance 方法。

    protected override void OnStartup(StartupEventArgs e)
    {
        // This will prevent multiple instances of the application from running at the same time.
        Make.SingleInstance("MyUniqueAppName ddd81fc8-9107-4e33-b848-cac4c3ec3d2a");
        base.OnStartup(e);
    }

第 7 步:运行应用程序

运行应用程序,您应该会看到 MainView。

Avalonia

步骤 1: 安装 CrissCross

CrissCross 可在 NuGet 上找到。您可以使用 NuGet 包管理器安装它

Install-Package CrissCross.Avalonia

第 2 步:创建 ViewModel

创建一个继承自 RxObject 的 ViewModel。这是用于 MainWindow 的 ViewModel。

    public class MainWindowViewModel : RxObject
    {
        public MainWindowViewModel()
        {
            this.BuildComplete(() =>
            {
                // Do something when the IOC Container is built
            });

            // Setup the IOC Container
            Locator.CurrentMutable.RegisterConstant<MainViewModel>(new());
            Locator.CurrentMutable.Register<IViewFor<MainViewModel>>(() => new MainView());

            Locator.CurrentMutable.RegisterConstant<FirstViewModel>(new());
            Locator.CurrentMutable.Register<IViewFor<FirstViewModel>>(() => new FirstView());
            
            // Notify the application that the IOC Container that it is complete and ready to use.
            Locator.CurrentMutable.SetupComplete();
        }
    }

第 3 步:创建导航视图

创建一个继承自 NavigationWindowNavigationUserControl 的 View。这是用于 MainWindow 的 View。在 XAML 的 Window 继承处添加 xmlns:rxNav="https://github.com/reactivemarbles/CrissCross",在 XAML 中将 Window 改为 rxNav:NavigationWindow。或者,将 UserControl 改为 rxNav:NavigationUserControl 在 XAML 中。

Avalonia 有两种操作模式,您需要选择适合您应用程序的正确模式。

    public partial class MainWindow : NavigationWindow<MainWindowViewModel>
    {
        public MainWindow()
        {
            // Remember to set x:Name in XAML to "mainWindow"
            InitializeComponent();
            
            this.WhenActivated(disposables =>
            {
                // Do something when the View is activated

                // Configure the Navigation for the MainWindow
                NavBack.Command = ReactiveCommand.Create(() => this.NavigateBack(), CanNavigateBack).DisposeWith(d);
                
                // Navigate to the MainViewModel
                this.NavigateToView<MainViewModel>();
            });
        }
    }

第 4 步:创建 ViewModel

创建一个继承自 RxObject 的 ViewModel。这是用于 MainView 的 ViewModel。

    public class MainViewModel : RxObject
    {
        public MainViewModel()
        {
            this.BuildComplete(() =>
            {
                // Do something when the IOC Container is built

                // Configure the Navigation for the MainViewModel using, you will pass the name of the Navigation Host Window that you want to navigate with.
                this.NavigateBack("mainWindow")
                this.CanNavigateBack("mainWindow")
                this.NavigateToView<FirstViewModel>("mainWindow")
            });
        }
    }

第 5 步:创建 View

创建一个继承自 ReactiveUserControl 的 View。这是用于 MainView 的 View。

    public partial class MainView : ReactiveUserControl<MainViewModel>
    {
        public MainView()
        {
            InitializeComponent();

            this.WhenActivated(disposables =>
            {
                // Do something when the View is activated
            });
        }
    }

CrissCross.WPF.Plot

CrissCross.WPF.Plot 是一个提供简单方式在 WPF 应用程序中绘制数据的库。它旨在与 CrissCross 一起使用。

Adriana Segher 想出了一个可以接受响应式数据源作为绘图的初步概念。这个概念后来发展成为一个库,可以与 CrissCross Wpf 一起使用。

该库基于 ScottPlot 构建,为 WPF 应用程序中绘制响应式数据提供了简单的方法。

该库可在 NuGet 上找到。您可以使用 NuGet 包管理器安装它。

Nuget Nuget

Install-Package CrissCross.WPF.Plot

当前功能

  • 从响应式数据源绘制数据
  • 从具有多个序列的响应式数据源数组中绘制数据(目前限于 9 个序列)
  • 通过标尺进行光标跟踪
  • 缩放和平移
  • 拖动缩放区域
  • 绘图可见性
  • 自动缩放/手动缩放
  • 启用/禁用与绘图的交互
  • 多个 Y 轴

未来功能

  • 超过 9 个序列
  • 通过属性对话框配置图表
  • 轴配置、颜色配置、刻度配置、线条配置
  • 具有差分分析的多个标尺
  • 用于 XY 图的多个 X 轴
  • 从大型数据源(如动态数据源)中选择可绘制的数据
产品 兼容和额外计算的靶框架版本。
.NET net6.0-windows10.0.17763 是兼容的。 net7.0-windows 已计算。 net8.0-windows 已计算。 net8.0-windows10.0.17763 是兼容的。
.NET Framework net462兼容。 net463已计算。 net47已计算。 net471已计算。 net472兼容。 net48兼容。 net481已计算。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于目标框架.NET标准的信息。

NuGet包

此包不被任何NuGet包使用。

GitHub仓库

此包不被任何流行的GitHub仓库使用。

版本 下载 最后更新
2.0.6 46 8/2/2024
2.0.5 59 8/1/2024
2.0.4 34 7/31/2024
2.0.3 61 7/28/2024
2.0.2 55 7/25/2024
2.0.1 72 7/10/2024
2.0.0 71 5/18/2024
1.0.25 91 4/30/2024
1.0.24 91 4/19/2024
1.0.23 80 4/10/2024
1.0.22 88 3/29/2024
1.0.21 93 3/26/2024
1.0.20 93 3/22/2024
1.0.19 98 3/21/2024
1.0.18 112 3/19/2024
1.0.17 95 3/14/2024
1.0.16 98 3/13/2024
1.0.15 94 3/12/2024
1.0.14 108 3/11/2024
1.0.13 109 3/8/2024
1.0.12 108 3/7/2024
1.0.11 98 3/5/2024
1.0.10 95 2/22/2024
1.0.9 95 2/21/2024
1.0.8 92 2/21/2024
1.0.7 95 2/19/2024
1.0.6 92 2/16/2024
1.0.5 108 2/8/2024
1.0.4 155 1/4/2024
1.0.3 128 9/11/2023
1.0.2 104 9/9/2023
1.0.1 102 9/8/2023
1.0.0 108 9/7/2023

与Net 6/8和netstandard2.0的兼容性