如何将平移命令绑定到 WPF 中 OxyPlot 的鼠标左键?
How to bind the Panning command to the left mousebutton for OxyPlot in WPF?
我在 WPF 应用程序中使用 Oxyplot 控件。是否有一种 MVVM 友好的方式来重新连接右键单击平移操作以通过左键单击发生?
我当前的 wpf 代码是
<oxy:PlotView Model="{Binding MyData}" Grid.Column="1" Grid.Row="0" />
我建议您创建一个用户控件:
myUC.xaml
<oxy:PlotView x:Name="PlotView1" Model="{Binding **MyPlotModel**}" />
myUC.xaml.cs
public partial class myUC : UserControl
{
public myUC()
{
InitializeComponent();
PlotView1.Controller = new OxyPlot.PlotController();
/* Events Managment */
PlotView1.Controller.UnbindAll();
PlotView1.Controller.BindMouseDown(OxyMouseButton.Left, PlotCommands.PanAt);
}
}
请注意,我已将 Mydata 替换为 MyPlotModel,如果您想直接绑定数据,请改用 Plot。
它不是真正的 MVVM 友好,因为你必须使用这个 UC,但你可以更改它的 DataContext 以将它绑定到你的 ViewModel。
通常你可以像这样绑定一个从你的 viewModel 创建的控制器:
<oxy:PlotView x:Name="PlotView1" Model="{Binding **MyPlotModel**}" Controller="{Binding MyPlotController}"/>
但它似乎有问题,我不明白为什么。可能这会对你有所帮助
https://github.com/oxyplot/oxyplot/issues/436
如果没有 UC 可以解决它,请告诉我。
我在 WPF 应用程序中使用 Oxyplot 控件。是否有一种 MVVM 友好的方式来重新连接右键单击平移操作以通过左键单击发生?
我当前的 wpf 代码是
<oxy:PlotView Model="{Binding MyData}" Grid.Column="1" Grid.Row="0" />
我建议您创建一个用户控件:
myUC.xaml
<oxy:PlotView x:Name="PlotView1" Model="{Binding **MyPlotModel**}" />
myUC.xaml.cs
public partial class myUC : UserControl
{
public myUC()
{
InitializeComponent();
PlotView1.Controller = new OxyPlot.PlotController();
/* Events Managment */
PlotView1.Controller.UnbindAll();
PlotView1.Controller.BindMouseDown(OxyMouseButton.Left, PlotCommands.PanAt);
}
}
请注意,我已将 Mydata 替换为 MyPlotModel,如果您想直接绑定数据,请改用 Plot。
它不是真正的 MVVM 友好,因为你必须使用这个 UC,但你可以更改它的 DataContext 以将它绑定到你的 ViewModel。
通常你可以像这样绑定一个从你的 viewModel 创建的控制器:
<oxy:PlotView x:Name="PlotView1" Model="{Binding **MyPlotModel**}" Controller="{Binding MyPlotController}"/>
但它似乎有问题,我不明白为什么。可能这会对你有所帮助 https://github.com/oxyplot/oxyplot/issues/436 如果没有 UC 可以解决它,请告诉我。