我创建使用SciChart一个图表应用程序。我添加了一个图表改性剂类,其允许图表数据的编辑,但目前仅显示数据。我要扩展这个类,使每个XyDataSeries充分的ObservableCollection可以访问。
我已经实现,我可以在主窗口的DataContext每当我运行集合是示出了在改性剂类为空的应用程序绑定到但是附加属性。请你可以建议。谢谢
public class MoveBlockModifier : ChartModifierBase
{
public static readonly DependencyProperty XyFGDataProperty = DependencyProperty.RegisterAttached("XyFGData", typeof(ObservableCollection<XyDataSeries<double,double>>), typeof(MoveBlockModifier), new FrameworkPropertyMetadata(new ObservableCollection<XyDataSeries<double,double>>()));
public ObservableCollection<XyDataSeries<double, double>> XyFGData
{
get { return (ObservableCollection < XyDataSeries<double, double>>)GetValue(XyFGDataProperty); }
set { SetValue(XyFGDataProperty, value); }
}
public MoveBlockModifier()
{
_ghostSeries = new FastLineRenderableSeries()
{
Stroke = Colors.Black,
DataSeries = editingSeries,
Name = "GhostSeries",
StrokeThickness = 1,
Opacity = 0.75,
};
}
}
Public Class MainWindow: Window, INotifyPropertyChanged
{
private ObservableCollection<XyDataSeries<double, double>> _xyFGData;
public ObservableCollection<XyDataSeries<double, double>> XYFGData
{
get { return _xyFGData; }
set { _xyFGData = value; OnPropertyChanged("XYFGData"); }
}
}
主窗口的XAML
<s:SciChartSurface x:Name="Chart2">
<s:SciChartSurface.ChartModifier>
<local:MoveBlockModifier FixStart="{Binding FixStart}" FixEnd="{Binding FixEnd}"
IsEnabled="{Binding ChartTwoMoveBlockEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
XyFGData="{Binding XYFGData, Mode=TwoWay}" />
</s:ModifierGroup>
</s:SciChartSurface.ChartModifier>
</s:SciChartSurface>
上面似乎不完整的问题/有一些错误。你提到的附加属性,其中定义为这
public static readonly DependencyProperty XyFGDataProperty = DependencyProperty.RegisterAttached("XyFGData", typeof(ObservableCollection<XyDataSeries<double,double>>), typeof(MoveBlockModifier), new FrameworkPropertyMetadata(new ObservableCollection<XyDataSeries<double,double>>()));
public ObservableCollection<XyDataSeries<double, double>> XyFGData
{
get { return (ObservableCollection < XyDataSeries<double, double>>)GetValue(XyFGDataProperty); }
set { SetValue(XyFGDataProperty, value); }
}
...
但这不是在WPF定义附加属性的方式。遵循how to register an attached property MSDN文档。
其次,您需要定义new ObservableCollectionXyDataSeries<double, double>
在你FrameworkPropertyMetadata的默认值,但是这是一个糟糕的主意,因为你将静态跨越MoveBlockModifier的所有实例共享ObservableCollectionXyDataSeries<double, double>
的一个实例。看一看Where to initialize reference type dependency properties for a custom control?
最后它的一个附加的要定义属性,但在XAML你不使用它像一个附加属性。
这部分:
是不正确的。 See how an attached property is attached in XAML here。
最后,你绑定MoveBlockModifier.XyFGData
一个属性XYFGData在你的主窗口,但MoveBlockModifier的DataContext的可能不是主窗口。
我建议重新启动并修复这些错误!