public override void SetValue(object component, object value) { FinancialData trade = (FinancialData)component; if (null != trade) { trade.SetProp(Key, value); } OnValueChanged(component, EventArgs.Empty); }
public override object GetValue(object component) { object retVal = null; FinancialData trade = (FinancialData)component; if (null != trade) { retVal = trade.GetProp(Key); } return(retVal); }
public Window1() { InitializeComponent(); // DataTable as source var dt = new System.Data.DataTable(); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Serial", typeof(int)); dt.Columns.Add("Price", typeof(decimal)); dt.Columns.Add("Current", typeof(bool)); var rnd = new Random(); for (int r = 0; r < 100; r++) { dt.Rows.Add( string.Format("item {0}", r), r, new decimal(rnd.NextDouble() * 10000 + 1000), rnd.NextDouble() < 0.8); } var dtView = new ListCollectionView(dt.DefaultView); // CustomTypeDescriptor as source var fd = FinancialData.GetFinancialData(); var fdView = new ListCollectionView(fd); // bind c1 grids _flexDataTable.ItemsSource = dtView; _flexFinancial.ItemsSource = fdView; // save main view to customize in event handlers _mainView = fdView; _mainView.CollectionChanged += _mainView_CollectionChanged; // configure search box _search.View = _mainView; var ctd = _mainView.CurrentItem as ICustomTypeDescriptor; foreach (PropertyDescriptor pd in ctd.GetProperties()) { if (pd.Name == "Symbol" || pd.Name == "Name") { _search.FilterProperties.Add(pd); } } // customize group row content _flexFinancial.GroupHeaderConverter = new SymbolGroupHeaderConverter(); }
// get a default list of financial items public static FinancialDataList GetFinancialData() { var list = new FinancialDataList(); var rnd = new Random(0); var asm = Assembly.GetExecutingAssembly(); foreach (string resName in asm.GetManifestResourceNames()) { if (resName.EndsWith("data.zip")) { var zip = new C1.C1Zip.C1ZipFile(asm.GetManifestResourceStream(resName)); using (var sr = new StreamReader(zip.Entries["StockSymbols.txt"].OpenReader())) { while (!sr.EndOfStream) { var sn = sr.ReadLine().Split('\t'); if (sn.Length > 1 && sn[0].Trim().Length > 0) { var data = new FinancialData(); data.SetProp("Symbol", sn[0]); data.SetProp("Name", sn[1]); data.SetProp("Bid", rnd.Next(1, 1000)); data.SetProp("Ask", (decimal)rnd.NextDouble()); data.SetProp("LastSale", (decimal)rnd.NextDouble()); data.SetProp("BidSize", rnd.Next(10, 500)); data.SetProp("AskSize", rnd.Next(10, 500)); data.SetProp("LastSize", rnd.Next(10, 500)); data.SetProp("Volume", rnd.Next(10000, 20000)); data.SetProp("QuoteTime", DateTime.Now); data.SetProp("TradeTime", DateTime.Now); list.Add(data); FinancialData.BuildPropertyDescriptorCollection(data._propBag, false); } } } list.AutoUpdate = true; return(list); } } throw new Exception("Can't find 'data.zip' embedded resource."); }