gpt4 book ai didi

c# - OxyPlot 中的多个 LineSeries 绑定(bind)

转载 作者:太空狗 更新时间:2023-10-29 22:52:01 25 4
gpt4 key购买 nike

是否可以将绘图绑定(bind)到 LineSeries 的集合而不是 OxyPlot 中的单个 LineSeries? (而不是通过模型)。

我正在寻找这样的东西:

<oxy:Plot>        
<oxy:Plot.Series>
<oxy:LineSeries ItemsSource="{Binding myCollectionOfLineSeries}" />
</oxy:Plot.Series>
</oxy:Plot>

myCollectionOfLineSeries 在哪里:

private ObservableCollection<LineSeries> _myCollectionOfLineSeries ;
public ObservableCollection<LineSeries> myCollectionOfLineSeries
{
get
{
return _myCollectionOfLineSeries ;
}
set
{
_myCollectionOfLineSeries = value;
OnPropertyChanged("myCollectionOfLineSeries ");

}
}

我希望答案是:a) “不,这是不可能的”或 b) “是的,只需将 XYZ 放在 IJK 之前”。

感谢阅读。

最佳答案

可能有点晚了,但最近我有同样的问题:我需要动态绘制多个系列(基于用户选择的货币的几条 yield 曲线)但我不想直接绑定(bind) Plot 使用 PlotModel,因为其他属性(例如 Title)需要在我的 View 模型中设置为代码而不是 XAML 标记。

所以我将 PlotModel 定义为资源,将其绑定(bind)到 Plot。并在加载 View 时查找 PlotModel。通过这种方法,我可以通过 XAML 标记定义视觉内容(例如标题、轴、图例等),同时在我的 View 模型代码中放置生成系列的逻辑。

不确定这是否是一个好方法,但它解决了我的问题。

1) XAML - 定义资源

<UserControl.Resources>
<oxyPlot:PlotModel
x:Key="TestPlotModel"
Title="XXX Curves (Preview)"
Subtitle="Scroll mousewheel to zoom; Right-drag to pan"
LegendPlacement="Outside"
LegendBorder="{x:Static Member=oxyPlot:OxyColors.Black}"
>
<oxyPlot:PlotModel.Axes>
<axes:LinearAxis
Title="Rate (%)"
Position="Left"
StartPosition="0"
StringFormat="#.00000"
MajorGridlineStyle="Solid"
MajorGridlineColor="{x:Static Member=oxyPlot:OxyColors.LightGray}"
MinorGridlineStyle="Dot"
MinorGridlineColor="{x:Static Member=oxyPlot:OxyColors.LightGray}"
>
</axes:LinearAxis>
<axes:LinearAxis
Title="Maturity (Days)"
Position="Bottom"
StartPosition="0"
MajorGridlineStyle="Solid"
MajorGridlineColor="{x:Static Member=oxyPlot:OxyColors.LightGray}"
>
</axes:LinearAxis>
</oxyPlot:PlotModel.Axes>
</oxyPlot:PlotModel>
</UserControl.Resources>

2) XAML - 绘图

<oxy:Plot Grid.Row="1" Model="{Binding Source={StaticResource TestPlotModel}}">
</oxy:Plot>

3) View model - 从 View 中获取模型但不绑定(bind)

protected override void OnViewLoaded(object view)
{
base.OnViewLoaded(view);
this._model = (PlotModel)((XXXView)view).FindResource("TestPlotModel");
}

4)查看模型——生成多个系列

_model.Series.Clear();
foreach (var currency in distinctCurrencies)
{
IEnumerable<DataPoint> dataPoints = ...;

LineSeries lineSeries = new LineSeries()
{
Title = String.Format("*{0}", currency),
ItemsSource = dataPoints
};

_model.Series.Add(lineSeries);
}

希望对您有所帮助!

关于c# - OxyPlot 中的多个 LineSeries 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17198926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com