or
private void SetupChart() { // some data to visualise... // NB: need a reasonable number of points, doesn't exhibit at low numbers var data = new DataTable(); data.Columns.Add("x", typeof(int)); data.Columns.Add("y", typeof(double)); var date = new DateTime(2012, 1, 1); var rnd = new Random(); for (var i = 0; i < 100; i++) { var row = data.NewRow(); row["x"] = date.Year * 12 + date.Month - 1; // integer value calc'd so that 1st of month is evenly spaced (see UpdateLabels() below) row["y"] = 50 + rnd.NextDouble() * 10; data.Rows.Add(row); date = date.AddMonths(1); } // just set up a basic line chart for testing purposes... chart.DefaultView.ChartLegend.Visibility = System.Windows.Visibility.Collapsed; chart.DefaultView.ChartArea.EnableAnimations = false; chart.DefaultView.ChartArea.AxisY.StripLinesVisibility = System.Windows.Visibility.Collapsed; chart.DefaultView.ChartArea.AxisX = new AxisX(); chart.DefaultView.ChartArea.AxisX.LayoutMode = AxisLayoutMode.Auto; chart.DefaultView.ChartArea.AxisX.StripLinesVisibility = System.Windows.Visibility.Collapsed; chart.DefaultView.ChartArea.AxisX.AutoRange = false; chart.DefaultView.ChartArea.AxisX.MinValue = data.Rows.Cast<DataRow>().Min(r => (int)r["x"]); chart.DefaultView.ChartArea.AxisX.MaxValue = data.Rows.Cast<DataRow>().Max(r => (int)r["x"]); var mapping = new SeriesMapping(); mapping.ItemsSource = data; mapping.ItemMappings.Add(new ItemMapping("x", DataPointMember.XValue) { FieldType = data.Columns["x"].DataType }); mapping.ItemMappings.Add(new ItemMapping("y", DataPointMember.YValue) { FieldType = data.Columns["y"].DataType }); mapping.SeriesDefinition = new LineSeriesDefinition(); chart.SeriesMappings.Add(mapping); // to force initial ranging calc to occur... chart_SizeChanged(null, null); } /// <summary> /// Event handler /// </summary> private void chart_SizeChanged(object sender, SizeChangedEventArgs e) { if (e == null || e.WidthChanged) { RecalcRange(); UpdateLabels(); } } /// <summary> /// Event handler /// </summary> private void updateLabelsButton_Click(object sender, RoutedEventArgs e) { // manual force recalculate of the labels UpdateLabels(); } private void RecalcRange() {#if true // pick a reasonable step value... var width = chart.DefaultView.ChartArea.ActualWidth; var range = chart.DefaultView.ChartArea.AxisX.MaxValue - chart.DefaultView.ChartArea.AxisX.MinValue; var step = Math.Max(1, (int)Math.Ceiling(range * chart.DefaultView.ChartArea.AxisX.TicksDistance / width)); chart.DefaultView.ChartArea.AxisX.Step = step;#else // it happens for certain constants, such as 8 (but not for 9 etc)... chart.DefaultView.ChartArea.AxisX.Step = 8;#endif } private void UpdateLabels() { foreach (var tickPoint in chart.DefaultView.ChartArea.AxisX.TickPoints) { // Reconstitutes the date string for the label from the integer value in x column.. var dt = new DateTime((int)tickPoint.Value / 12, ((int)tickPoint.Value % 12) + 1, 1); tickPoint.Label = dt.ToString("MMM-yy"); } }Table l_Table = new Table();l_Table.LayoutMode = TableLayoutMode.AutoFit;ownerSection.Blocks.Add(l_Table);foreach (IFeatureViewModel l_Node in treeViewModel.Nodes){ TableRow l_Row = new TableRow(); l_Table.Rows.Add(l_Row); Table l_InnerTable = new Table(); l_InnerTable.LayoutMode = TableLayoutMode.AutoFit; TableCell l_InnerCell = new TableCell(); l_Row.Cells.Add(l_InnerCell); l_InnerCell.Borders = new TableCellBorders(0.5f, BorderStyle.Single, System.Windows.Media.Colors.Red); l_InnerCell.Blocks.Add(l_InnerTable); TableRow l_InnerRow = new TableRow(); l_InnerTable.Rows.Add(l_InnerRow); ....
I created custom RadDataFilter , which contains dropdown list. DropDown List is OK. Now here is new requirement, I want to add telerik DateTimePicker. DateTimePicker Bind successfully, problem is that I can’t get selected date value. Therefore FilterDesripter.value is not set.
For Combobox here is template
<DataTemplate x:Key="ComboBoxEditor">
<telerik:RadComboBox SelectedValue="{Binding Value, Mode=TwoWay, FallbackValue=null}" MinWidth="100" />
</DataTemplate>
But how I’ll set selectedDate Value, here is my Code.
<DataTemplate x:Key="DateTimeEditor">
< telerik:DatePicker MinWidth="100" SelectedDate="{Binding Value}"></my:DatePicker>
</DataTemplate>