CrissCross 2.0.6
dotnet add package CrissCross --version 2.0.6
NuGet\Install-Package CrissCross -Version 2.0.6
<PackageReference Include="CrissCross" Version="2.0.6" />
paket add CrissCross --version 2.0.6
#r "nuget: CrissCross, 2.0.6"
// Install CrissCross as a Cake Addin #addin nuget:?package=CrissCross&version=2.0.6 // Install CrissCross as a Cake Tool #tool nuget:?package=CrissCross&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步:创建一个View
创建一个继承自NavigationWindow
的View。这是用于MainWindow的View。在XAML中添加xmlns:rxNav="https://github.com/reactivemarbles/CrissCross",将Window更改为rxNav:NavigationWindow。在XAML中将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步:创建一个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
创建一个继承自NavigationWindow
或NavigationUserControl
的View。这是用于MainWindow的View。在XAML中添加xmlns:rxNav="https://github.com/reactivemarbles/CrissCross",将Window更改为rxNav:NavigationWindow。或在XAML中将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包管理器进行安装
Install-Package CrissCross.WPF.Plot
当前功能
- 从响应式数据源中绘图数据
- 从具有多个序列的响应式数据源数组的索引中绘图数据(目前限制为9个)
- 通过CrossHair进行光标跟踪
- 缩放和平移
- 拖动缩放区域
- 绘图的可视性
- 自动缩放/手动缩放
- 启用/禁用与绘图交互
- 多个Y轴
未来功能
- 超过9个序列
- 通过属性对话框配置图表
- 轴配置、颜色配置、缩放配置、线条配置
- 多个具有差分分析的CrossHairs
- 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 已计算。 net6.0-windows10.0.17763 兼容。 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 已计算。 net8.0-windows10.0.17763 兼容。 |
.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 已计算。 monoandroid13.0 兼容。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 兼容。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 xamarinios10 兼容。 |
Xamarin.Mac | xamarinmac 已计算。 xamarinmac20 兼容。 |
Xamarin.TVOS | xamarintvos 已计算。 xamarintvos10 兼容。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETFramework 4.6.2
- ReactiveUI (>= 20.1.1)
-
.NETFramework 4.7.2
- ReactiveUI (>= 20.1.1)
-
.NETFramework 4.8
- ReactiveUI (>= 20.1.1)
-
.NETStandard 2.0
- ReactiveUI (>= 20.1.1)
-
MonoAndroid 13.0
- ReactiveUI (>= 19.6.12)
-
net6.0
- ReactiveUI (>= 20.1.1)
-
net6.0-windows10.0.17763
- ReactiveUI (>= 20.1.1)
-
net8.0
- ReactiveUI (>= 20.1.1)
-
net8.0-windows10.0.17763
- ReactiveUI (>= 20.1.1)
-
Tizen 4.0
- ReactiveUI (>= 19.6.12)
- Tizen.NET (>= 8.0.0.15631)
-
Xamarin.iOS 1.0
- ReactiveUI (>= 19.6.12)
-
Xamarin.Mac 2.0
- ReactiveUI (>= 19.6.12)
-
Xamarin.TVOS 1.0
- ReactiveUI (>= 19.6.12)
NuGet 包 (5)
显示依赖于 CrissCross 的前 5 个 NuGet 包
包 | 下载 |
---|---|
CrissCross.WPF
为 ReactiveUI 提供反应式导航框架 |
|
CrissCross.XamForms
为 ReactiveUI 提供反应式导航框架 |
|
CrissCross.MAUI
为 ReactiveUI 提供反应式导航框架 |
|
CrissCross.Avalonia
为 ReactiveUI 提供反应式导航框架 |
|
CrissCross.WinForms
为 ReactiveUI 提供反应式导航框架 |
GitHub 仓库
此包未被任何流行 GitHub 仓库使用。
版本 | 下载 | 最后更新 |
---|---|---|
2.0.6 | 60 | 8/2/2024 |
2.0.5 | 65 | 8/1/2024 |
2.0.4 | 44 | 7/31/2024 |
2.0.3 | 81 | 7/28/2024 |
2.0.2 | 85 | 7/25/2024 |
2.0.1 | 123 | 7/10/2024 |
2.0.0 | 139 | 5/18/2024 |
1.0.25 | 203 | 4/30/2024 |
1.0.24 | 148 | 4/19/2024 |
1.0.23 | 147 | 4/10/2024 |
1.0.22 | 156 | 3/29/2024 |
1.0.21 | 159 | 3/26/2024 |
1.0.20 | 164 | 3/22/2024 |
1.0.19 | 173 | 3/21/2024 |
1.0.18 | 163 | 3/19/2024 |
1.0.17 | 172 | 3/14/2024 |
1.0.16 | 177 | 3/13/2024 |
1.0.15 | 171 | 3/12/2024 |
1.0.14 | 183 | 3/11/2024 |
1.0.13 | 156 | 3/8/2024 |
1.0.12 | 176 | 3/7/2024 |
1.0.11 | 158 | 3/5/2024 |
1.0.10 | 180 | 2/22/2024 |
1.0.9 | 166 | 2/21/2024 |
1.0.8 | 158 | 2/21/2024 |
1.0.7 | 157 | 2/19/2024 |
1.0.6 | 151 | 2/16/2024 |
1.0.5 | 191 | 2/8/2024 |
1.0.4 | 201 | 1/4/2024 |
1.0.3 | 317 | 9/11/2023 |
1.0.2 | 228 | 9/9/2023 |
1.0.1 | 210 | 9/8/2023 |
1.0.0 | 223 | 9/7/2023 |
0.9.2 | 219 | 9/6/2023 |
0.9.1 | 234 | 8/6/2023 |
0.9.0 | 228 | 7/12/2023 |
0.8.0 | 207 | 6/23/2023 |
0.7.1 | 261 | 4/28/2023 |
0.7.0 | 347 | 3/14/2023 |
0.6.0 | 328 | 3/13/2023 |
0.5.0 | 355 | 3/11/2023 |
0.2.0 | 373 | 2/7/2023 |
0.1.0 | 424 | 1/7/2023 |
与 Net 6/8 和 netstandard2.0 的兼容性