CrissCross.Avalonia 2.0.6

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

// Install CrissCross.Avalonia as a Cake Tool
#tool nuget:?package=CrissCross.Avalonia&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

第二步:创建 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();
        }
    }

第三步:创建 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>();
            });
        }
    }

第四步:创建 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")
            });
        }
    }

第五步:创建 View

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

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

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

第六步:对于 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);
    }

第七步:运行应用程序

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

Avalonia

步骤1:安装CrissCross

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

Install-Package CrissCross.Avalonia

第二步:创建 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();
        }
    }

第三步:创建 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>();
            });
        }
    }

第四步:创建 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")
            });
        }
    }

第五步:创建 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 Standard netstandard2.0 兼容。 netstandard2.1 已计算。
.NET Framework 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 51 8/2/2024
2.0.5 58 8/1/2024
2.0.4 34 7/31/2024
2.0.3 58 7/28/2024
2.0.2 59 7/25/2024
2.0.1 83 7/10/2024
2.0.0 67 5/18/2024
1.0.25 87 4/30/2024
1.0.24 86 4/19/2024
1.0.23 79 4/10/2024
1.0.22 87 3/29/2024
1.0.21 99 3/26/2024
1.0.20 85 3/22/2024
1.0.19 94 3/21/2024
1.0.18 87 3/19/2024
1.0.17 103 3/14/2024
1.0.16 105 3/13/2024
1.0.15 104 3/12/2024
1.0.14 114 3/11/2024
1.0.13 102 3/8/2024
1.0.12 99 3/7/2024
1.0.11 86 3/5/2024
1.0.10 93 2/22/2024
1.0.9 106 2/21/2024
1.0.8 85 2/21/2024
1.0.7 97 2/19/2024
1.0.6 93 2/16/2024
1.0.5 113 2/8/2024
1.0.4 151 1/4/2024
1.0.3 127 9/11/2023
1.0.2 112 9/9/2023
1.0.1 112 9/8/2023
1.0.0 99 9/7/2023
0.9.2 109 9/6/2023

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