CrissCross.WPF.Plot 2.0.6
dotnet add package CrissCross.WPF.Plot --version 2.0.6
NuGet\Install-Package CrissCross.WPF.Plot -Version 2.0.6
<PackageReference Include="CrissCross.WPF.Plot" Version="2.0.6" />
paket add CrissCross.WPF.Plot --version 2.0.6
#r "nuget: CrissCross.WPF.Plot, 2.0.6"
// Install CrissCross.WPF.Plot as a Cake Addin #addin nuget:?package=CrissCross.WPF.Plot&version=2.0.6 // Install CrissCross.WPF.Plot as a Cake Tool #tool nuget:?package=CrissCross.WPF.Plot&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
第二步:创建 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 中。在 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>();
});
}
}
第四步:创建 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
创建一个继承自 NavigationWindow
或 NavigationUserControl
的 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>();
});
}
}
第四步:创建 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 包管理器安装它。
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 已计算。 |
-
.NETFramework 4.6.2
- AppBarButton.WPF (>= 1.0.1)
- CrissCross.WPF (>= 2.0.6)
- ReactiveList (>= 2.0.2)
- ScottPlot.WPF (>= 5.0.37)
-
.NETFramework 4.7.2
- AppBarButton.WPF (>= 1.0.1)
- CrissCross.WPF (>= 2.0.6)
- ReactiveList (>= 2.0.2)
- ScottPlot.WPF (>= 5.0.37)
-
.NETFramework 4.8
- AppBarButton.WPF (>= 1.0.1)
- CrissCross.WPF (>= 2.0.6)
- ReactiveList (>= 2.0.2)
- ScottPlot.WPF (>= 5.0.37)
-
net6.0-windows10.0.17763
- AppBarButton.WPF (>= 1.0.1)
- CrissCross.WPF (>= 2.0.6)
- ReactiveList (>= 2.0.2)
- ScottPlot.WPF (>= 5.0.37)
-
net8.0-windows10.0.17763
- AppBarButton.WPF (>= 1.0.1)
- CrissCross.WPF (>= 2.0.6)
- ReactiveList (>= 2.0.2)
- ScottPlot.WPF (>= 5.0.37)
NuGet 包
此包未使用任何 NuGet 包。
GitHub 仓库
此包未使用任何流行的 GitHub 仓库。
与 Net 6/8 和 netstandard2.0 的兼容性