CrissCross.MAUI 2.0.6
dotnet add package CrissCross.MAUI --version 2.0.6
NuGet\Install-Package CrissCross.MAUI -Version 2.0.6
<PackageReference Include="CrissCross.MAUI" Version="2.0.6" />
paket add CrissCross.MAUI --version 2.0.6
#r "nuget: CrissCross.MAUI, 2.0.6"
// Install CrissCross.MAUI as a Cake Addin #addin nuget:?package=CrissCross.MAUI&version=2.0.6 // Install CrissCross.MAUI as a Cake Tool #tool nuget:?package=CrissCross.MAUI&version=2.0.6
CrissCross
基于 ReactiveUI 的项目的导航框架
什么是 CrissCross?
CrissCross 是一个基于 ReactiveUI 的项目的导航框架。它旨在与 ReactiveUI 一起使用,但也可以适配用于任何 MVVM 框架。
为什么选择 CrissCross?
CrissCross 被设计成一个简单、轻量级且易于使用的导航框架。它旨在与 ReactiveUI 一起使用。
如何使用 CrissCross?
步骤 1: 安装 CrissCross
CrissCross 可在 NuGet 上使用。您可以使用 NuGet 包管理器安装它
Install-Package CrissCross
或
Install-Package CrissCross.WPF
或
Install-Package CrissCross.XamForms
或
Install-Package CrissCross.MAUI
或
Install-Package CrissCross.Avalonia
或
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: 创建视图
创建一个继承自 NavigationWindow
的视图。这是用于 MainWindow 的视图。在 XAML 中 Window 继承处添加 xmlns:rxNav="https://github.com/reactivemarbles/CrissCross"。将 Window 更改为 rxNav:NavigationWindow。添加 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:创建一个视图
创建一个继承自 ReactiveUserControl
的视图。这是用于 MainView 的视图。
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:创建一个导航视图
创建一个继承自 NavigationWindow
或 NavigationUserControl
的视图。这是用于 MainWindow 的视图。在 XAML 中添加 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:创建一个视图
创建一个继承自 ReactiveUserControl
的视图。这是用于 MainView 的视图。
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 包管理器安装它。
Install-Package CrissCross.WPF.Plot
当前功能
- 从反应式数据源绘制数据
- 从带有多个系列(目前限制为 9 个)的反应式数据源数组绘制数据
- 通过标尺跟踪
- 缩放和平移
- 拖动缩放区域
- 图的可见性
- 自动缩放/手动缩放
- 启用/禁用图表交互
- 多个 Y 轴
未来功能
- 超过 9 个系列
- 通过属性对话框配置图表
- 轴配置、颜色配置、缩放配置、线条配置
- 具有差异分析的多个标尺
- XY 图的多个 X 轴
- 从大型数据源(如动态数据源)中选择可绘制的数据
产品 | 版本 兼容的以及额外的计算目标框架版本。 |
---|---|
.NET | net8.0 兼容。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 net8.0-windows10.0.19041 兼容。 |
-
net8.0
- CrissCross (≥ 2.0.6)
- Microsoft.Extensions.DependencyInjection (≥ 8.0.0)
- Microsoft.Extensions.Logging (≥ 8.0.0)
- Microsoft.Maui.Controls (≥ 8.0.21)
- Microsoft.Maui.Controls.Compatibility (≥ 8.0.21)
- ReactiveUI.Maui (≥ 20.1.1)
-
net8.0-windows10.0.19041
- CrissCross (≥ 2.0.6)
- Microsoft.Extensions.DependencyInjection (≥ 8.0.0)
- Microsoft.Extensions.Logging (≥ 8.0.0)
- Microsoft.Maui.Controls (≥ 8.0.21)
- Microsoft.Maui.Controls.Compatibility (≥ 8.0.21)
- ReactiveUI.Maui (≥ 20.1.1)
NuGet 包
此包未经任何 NuGet 包使用。
GitHub 代码库
此包未用于任何流行的 GitHub 代码库。
版本 | 下载 | 最后更新 |
---|---|---|
2.0.6 | 34 | 8/2/2024 |
2.0.5 | 46 | 8/1/2024 |
2.0.4 | 36 | 7/31/2024 |
2.0.3 | 51 | 7/28/2024 |
2.0.2 | 44 | 7/25/2024 |
2.0.1 | 69 | 7/10/2024 |
2.0.0 | 89 | 5/18/2024 |
1.0.25 | 96 | 4/30/2024 |
1.0.24 | 96 | 4/19/2024 |
1.0.23 | 85 | 4/10/2024 |
1.0.22 | 73 | 3/29/2024 |
1.0.21 | 79 | 3/26/2024 |
1.0.20 | 87 | 3/22/2024 |
1.0.19 | 84 | 3/21/2024 |
1.0.18 | 94 | 3/19/2024 |
1.0.17 | 84 | 3/14/2024 |
1.0.16 | 91 | 3/13/2024 |
1.0.15 | 85 | 3/12/2024 |
1.0.14 | 97 | 3/11/2024 |
1.0.13 | 89 | 3/8/2024 |
1.0.12 | 105 | 3/7/2024 |
1.0.11 | 106 | 3/5/2024 |
1.0.10 | 99 | 2/22/2024 |
1.0.9 | 110 | 2/21/2024 |
1.0.8 | 97 | 2/21/2024 |
1.0.7 | 83 | 2/19/2024 |
1.0.6 | 86 | 2/16/2024 |
1.0.5 | 98 | 2/8/2024 |
1.0.4 | 154 | 1/4/2024 |
1.0.3 | 128 | 9/11/2023 |
1.0.2 | 123 | 9/9/2023 |
1.0.1 | 120 | 9/8/2023 |
1.0.0 | 115 | 9/7/2023 |
0.9.2 | 117 | 9/6/2023 |
0.9.1 | 151 | 8/6/2023 |
0.9.0 | 138 | 7/12/2023 |
与 Net 6/8 和 netstandard2.0 兼容性