我有ObservableCollection女巫可以容纳两种不同类型FirstDerivedType
和SecondDerivedType
。他们两人都持有Data
的参考资料。而主要的问题是,为什么当我在构造函数创建PlotModel
的实例FirstDerivedType()
基本函数的奇怪行为
Data.PlotModel = new PlotModel();
它的效果很好。但是当我在base.Draw(Data.PlotModel);
中创建PlotModel
的实例时,我在DataContext
中获得null
。为什么?
namespace WpfApplication3
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new CurrentViewModel();
}
}
public class CurrentViewModel
{
private ObservableCollection<BaseType> items;
public ObservableCollection<BaseType> Items
{
get
{
return this.items;
}
set
{
this.items = value;
}
}
public CurrentViewModel()
{
Items = new ObservableCollection<BaseType>();
Items.Add(new FirstDerivedType (17));
Items.Add(new FirstDerivedType (100));
Items.Add(new FirstDerivedType (50));
Items.Add(new FirstDerivedType (120));
}
}
public class Data:INotifyPropertyChanged
{
public int ID { get; set; }
public PlotModel PlotModel { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string info)
{
if (PropertyChanged!=null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
public abstract class BaseType
{
public virtual void Draw(PlotModel PlotModel)
{
PlotModel = new OxyPlot.PlotModel(); //do not Working
LineSeries LS= new LineSeries();
Random rnd = new Random();
for (int i=0; i<10; i++)
{
LS.Points.Add(new DataPoint(i,rnd.Next(1,100)));
}
PlotModel.Series.Add(LS);
PlotModel.InvalidatePlot(false);
}
}
public class FirstDerivedType : BaseType
{
public FirstDerivedType(int ID)
{
Data = new Data();
//Data.PlotModel = new PlotModel(); //Working
Data.ID = ID;
base.Draw(Data.PlotModel);
}
public Data Data { get; set; }
}
public class SecondDerivedType : BaseType
{
public Data Data { get; set; }
}
}
什么的DataContext? – nvoigt
此代码是WPF应用程序的一部分。 DataContext是我需要为绑定放置数据的属性。 – A191919