CrissCross.XamForms 2.0.6

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

// Install CrissCross.XamForms as a Cake Tool
#tool nuget:?package=CrissCross.XamForms&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 更改为 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:创建 NavigationView

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

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 提出了一个概念,创建一个可以接受反应性数据源的 Plot。随后开发成了一个可以使用 CrissCross Wpf 的库。

该库建立在 ScottPlot 之上,为 WPF 应用程序提供了一种简单的方式来绘制反应性数据。

该库可在 NuGet 上获取。您可以使用 NuGet 包管理器来安装它。

Nuget Nuget

Install-Package CrissCross.WPF.Plot

当前功能

  • 从反应性数据源绘制数据
  • 从多个系列(目前限制为 9 个)的反应性数据源数组的反应性数据源中绘图
  • 使用十字准星进行光标跟踪
  • 缩放和滚动
  • 拖拽缩放区域
  • 绘图的可视性
  • 自动缩放/手动缩放
  • 启用/禁用与绘图的交互
  • 多 Y 轴

未来功能

  • 超过 9 个系列
  • 通过属性对话框来配置图表
  • 轴配置、颜色配置、缩放配置、线条配置
  • 具有差分分析的多十字准星
  • XY 图的多 X 轴
  • 从大型数据源(如动态数据源)中选择可绘制的数据
产品 兼容的以及额外的计算目标框架版本。
.NET net5.0 已计算。 net5.0-windows 已计算。 net6.0 兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 兼容。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET 标准化 netstandard2.0 兼容。 netstandard2.1 已计算。
.NET 框架 net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容的目标框架
包含的目标框架(在包中)
有关 目标框架.NET Standard 的更多信息。

NuGet 包

此包未由任何 NuGet 包使用。

GitHub 存储库

此包未使用任何流行的 GitHub 存储库。

版本 下载 上次更新
2.0.6 31 8/2/2024
2.0.5 40 8/1/2024
2.0.4 38 7/31/2024
2.0.3 66 7/28/2024
2.0.2 63 7/25/2024
2.0.1 62 7/10/2024
2.0.0 80 5/18/2024
1.0.25 95 4/30/2024
1.0.24 99 4/19/2024
1.0.23 81 4/10/2024
1.0.22 93 3/29/2024
1.0.21 83 3/26/2024
1.0.20 91 3/22/2024
1.0.19 79 3/21/2024
1.0.18 99 3/19/2024
1.0.17 99 3/14/2024
1.0.16 104 3/13/2024
1.0.15 96 3/12/2024
1.0.14 102 3/11/2024
1.0.13 108 3/8/2024
1.0.12 90 3/7/2024
1.0.11 107 3/5/2024
1.0.10 105 2/22/2024
1.0.9 101 2/21/2024
1.0.8 102 2/21/2024
1.0.7 91 2/19/2024
1.0.6 87 2/16/2024
1.0.5 103 2/8/2024
1.0.4 135 1/4/2024
1.0.3 137 9/11/2023
1.0.2 128 9/9/2023
1.0.1 125 9/8/2023
1.0.0 120 9/7/2023
0.9.2 130 9/6/2023
0.9.1 129 8/6/2023
0.9.0 136 7/12/2023
0.8.0 133 6/23/2023
0.7.1 153 4/28/2023
0.7.0 199 3/14/2023
0.6.0 208 3/13/2023
0.5.0 220 3/11/2023
0.2.0 235 2/7/2023
0.1.0 276 1/7/2023

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