<Window x:Class="TelerikDateSelectCal.Window1"
xmlns:telerikQuickStart="clr-namespace:Telerik.Windows.Controls.QuickStart;assembly=Telerik.Windows.Controls"
xmlns:local="clr-namespace:TelerikDateSelectCal"
Title="Window1" Height="300" Width="552"
xml:lang="en-GB">
<Window.Resources>
<local:CustomTemplateSelector x:Key="WorksDiaryDayTemplateSelector">
<local:CustomTemplateSelector.SelectedRed>
<DataTemplate>
<Border Background="Red" Width="20">
<TextBox Background="Transparent" Text="{Binding Text}"
BorderThickness="0"/>
</Border>
</DataTemplate>
</local:CustomTemplateSelector.SelectedRed>
<local:CustomTemplateSelector.SelectedGreen>
<DataTemplate>
<Border Background="Green" Width="20">
<TextBox Background="Transparent" Text="{Binding Text}"
BorderThickness="0"/>
</Border>
</DataTemplate>
</local:CustomTemplateSelector.SelectedGreen>
<local:CustomTemplateSelector.SelectedBlue>
<DataTemplate>
<Border Background="Blue" Width="20">
<TextBox Background="Transparent" Text="{Binding Text}"
BorderThickness="0"/>
</Border>
</DataTemplate>
</local:CustomTemplateSelector.SelectedBlue>
<local:CustomTemplateSelector.SelectedYellow>
<DataTemplate>
<Border Background="Yellow" Width="20">
<TextBox Background="Transparent" Text="{Binding Text}"
BorderThickness="0"/>
</Border>
</DataTemplate>
</local:CustomTemplateSelector.SelectedYellow>
<local:CustomTemplateSelector.SelectedBlank>
<DataTemplate x:Name="Test">
<TextBox Background="Transparent" Text="{Binding Text}"
BorderThickness="0" Width="20"/>
</DataTemplate>
</local:CustomTemplateSelector.SelectedBlank>
</local:CustomTemplateSelector>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="20*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="20*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<Button Name="btnRed" Width="20" Height="20" Margin="3" Background="Red" Click="SetComboOpen"/>
<Button Name="btnGreen" Width="20" Height="20" Margin="3" Background="Green" Click="SetComboOpen"/>
<Button Name="btnBlue" Width="20" Height="20" Margin="3" Background="Blue" Click="SetComboOpen"/>
<Button Name="btnYellow" Width="20" Height="20" Margin="3" Background="Yellow" Click="SetComboOpen"/>
<TextBox Margin="4" Name="txt1" Height="50" BorderBrush="BlueViolet" TextWrapping="Wrap"
Width="150"></TextBox>
</StackPanel>
<StackPanel Grid.Column="1">
<ComboBox Name="cmbRed" Width="175" Margin="2" DropDownClosed="SetCacBackColor" >
<ComboBoxItem>Red</ComboBoxItem>
</ComboBox>
<ComboBox Name="cmbGreen" Width="175" Margin="2" DropDownClosed="SetCacBackColor">
<ComboBoxItem>Green</ComboBoxItem>
</ComboBox>
<ComboBox Name="cmbBlue" Width="175" Margin="2" DropDownClosed="SetCacBackColor">
<ComboBoxItem>Blue</ComboBoxItem>
</ComboBox>
<ComboBox Name="cmbYellow" Width="175" Margin="2" DropDownClosed="SetCacBackColor">
<ComboBoxItem>Yellow</ComboBoxItem>
</ComboBox>
</StackPanel>
</Grid>
<telerik:RadCalendar x:Name="calendar" Grid.Column="1"
Margin="2" SelectionMode="Single"
IsTodayHighlighted="True" ViewsHeaderVisibility="Collapsed" Culture="en-GB"
Rows="3" Columns="4"
SelectionChanged="calendar_SelectionChanged"
DayTemplateSelector="{StaticResource WorksDiaryDayTemplateSelector}"/>
</Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Telerik;
using Telerik.Windows.Controls;
using Telerik.Windows.Controls.Calendar;
using System.ComponentModel;
using System.Collections.ObjectModel;
using System.Data;
#if !SILVERLIGHT
using SelectionChangedEventArgs = System.Windows.Controls.SelectionChangedEventArgs;
using DataTemplateSelector = System.Windows.Controls.DataTemplateSelector;
#endif
namespace TelerikDateSelectCal
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
List<DateTime> lstRedDate;
List<DateTime> lstGreenDate;
List<DateTime> lstBlueDate;
List<DateTime> lstYellowDate;
public Window1()
{
InitializeComponent();
lstRedDate = new List<DateTime>();
lstGreenDate = new List<DateTime>();
lstBlueDate = new List<DateTime>();
lstYellowDate = new List<DateTime>();
setAllComboENFalse();
this.cmbRed.IsEnabled = true;
setSelectedDateGlbColor("Red");
}
private void SetCacBackColor(object sender, EventArgs e)
{
}
private void SetComboOpen(object sender, RoutedEventArgs e)
{
setAllComboENFalse();
string selecteColor = "";
if (sender == btnRed)
{
this.cmbRed.IsEnabled = true;
selecteColor = "Red";
}
else if (sender == btnGreen)
{
this.cmbGreen.IsEnabled = true;
selecteColor = "Green";
}
else if (sender == btnBlue)
{
this.cmbBlue.IsEnabled = true;
selecteColor = "Blue";
}
else if (sender == btnYellow)
{
this.cmbYellow.IsEnabled = true;
selecteColor = "Yellow";
}
setSelectedDateGlbColor(selecteColor);
}
protected void setSelectedDateGlbColor(string selectedColorName)
{
if (Application.Current.Properties.Contains("SelectedColor"))
Application.Current.Properties.Remove("SelectedColor");
Application.Current.Properties.Add("SelectedColor", selectedColorName);
}
protected void setAllComboENFalse()
{
this.cmbRed.IsEnabled = false;
this.cmbGreen.IsEnabled = false;
this.cmbBlue.IsEnabled = false;
this.cmbYellow.IsEnabled = false;
}
private void calendar_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (Application.Current.Properties.Contains("SelectedColor"))
{
string selectedColor = Application.Current.Properties["SelectedColor"].ToString();
switch (selectedColor)
{
case "Red":
lstRedDate.Add((DateTime)calendar.SelectedDate.Value);
if (Application.Current.Properties.Contains("RedColor"))
Application.Current.Properties.Remove("RedColor");
Application.Current.Properties.Add("RedColor", lstRedDate);
break;
case "Green":
lstGreenDate.Add((DateTime)calendar.SelectedDate.Value);
if (Application.Current.Properties.Contains("GreenColor"))
Application.Current.Properties.Remove("GreenColor");
Application.Current.Properties.Add("GreenColor", lstGreenDate);
break;
case "Blue":
lstBlueDate.Add((DateTime)calendar.SelectedDate.Value);
if (Application.Current.Properties.Contains("BlueColor"))
Application.Current.Properties.Remove("BlueColor");
Application.Current.Properties.Add("BlueColor", lstBlueDate);
break;
case "Yellow":
lstYellowDate.Add((DateTime)calendar.SelectedDate.Value);
if (Application.Current.Properties.Contains("YellowColor"))
Application.Current.Properties.Remove("YellowColor");
Application.Current.Properties.Add("YellowColor", lstYellowDate);
break;
default:
MessageBox.Show("Invalid Date Color....", "Message....", MessageBoxButton.OK, MessageBoxImage.Exclamation);
break;
}
DateTime tempDate;
tempDate = new DateTime(calendar.DisplayDate.Year, calendar.DisplayDate.Month, 1);
calendar.DisplayDate = tempDate.AddYears(8);
calendar.DisplayDate = tempDate;
}
else
{
MessageBox.Show("Please Select a date Color ", "Message....", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
}
[Serializable()]
public class CustomTemplateSelector : DataTemplateSelector
{
// ObservableCollection<Object> listTabsValue = new ObservableCollection<object>();
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
CalendarButtonContent content = item as CalendarButtonContent;
string daySelColorFlg = "";
List<DateTime> lstDtRed = (List<DateTime>)Application.Current.Properties["RedColor"];
List<DateTime> lstDtGreen = (List<DateTime>)Application.Current.Properties["GreenColor"];
List<DateTime> lstDtBlue = (List<DateTime>)Application.Current.Properties["BlueColor"];
List<DateTime> lstDtYellow = (List<DateTime>)Application.Current.Properties["YellowColor"];
if (Application.Current.Properties.Contains("SelectedColor"))
{
daySelColorFlg = Application.Current.Properties["SelectedColor"].ToString();
}
else
return SelectedBlank ;
if (content.ButtonType == CalendarButtonType.Date
|| content.ButtonType == CalendarButtonType.TodayDate)
{
switch (daySelColorFlg)
{
case "Red":
if (lstDtRed != null)
{
if (lstDtRed.Contains(content.Date))
return SelectedRed;
else if (lstDtGreen != null || lstDtBlue != null || lstDtYellow != null)
{
if(lstDtGreen != null)
if (lstDtGreen.Contains(content.Date))
return SelectedGreen;
if (lstDtBlue != null)
if (lstDtBlue.Contains(content.Date))
return SelectedBlue;
if (lstDtYellow != null)
if (lstDtYellow.Contains(content.Date))
return SelectedYellow;
}
else
return SelectedBlank;
}
else
return SelectedBlank;
break;
case "Green":
if (lstDtGreen != null)
{
if (lstDtGreen.Contains(content.Date))
return SelectedGreen;
else if (lstDtRed != null || lstDtBlue != null || lstDtYellow != null)
{
if (lstDtRed != null)
if (lstDtRed.Contains(content.Date))
return SelectedRed;
if (lstDtBlue != null)
if (lstDtBlue.Contains(content.Date))
return SelectedBlue;
if (lstDtYellow != null)
if (lstDtYellow.Contains(content.Date))
return SelectedYellow;
}
else
return SelectedBlank;
}
else
return SelectedBlank;
break;
case "Blue":
if (lstDtBlue != null)
{
if (lstDtBlue.Contains(content.Date))
return SelectedBlue;
else if (lstDtRed != null || lstDtGreen != null || lstDtYellow != null)
{
if (lstDtRed != null)
if (lstDtRed.Contains(content.Date))
return SelectedRed;
if (lstDtGreen != null)
if (lstDtGreen.Contains(content.Date))
return SelectedGreen;
if (lstDtYellow != null)
if (lstDtYellow.Contains(content.Date))
return SelectedYellow;
}
else
return SelectedBlank;
}
else
return SelectedBlank;
break;
case "Yellow":
if (lstDtYellow != null)
{
if (lstDtYellow.Contains(content.Date))
return SelectedYellow;
else if (lstDtRed != null || lstDtGreen != null || lstDtBlue != null)
{
if (lstDtRed != null)
if (lstDtRed.Contains(content.Date))
return SelectedRed;
if (lstDtGreen != null)
if (lstDtGreen.Contains(content.Date))
return SelectedGreen;
if (lstDtBlue != null)
if (lstDtBlue.Contains(content.Date))
return SelectedBlue;
}
else
return SelectedBlank;
}
else
return SelectedBlank;
break;
default:
break;
}
}
return SelectedBlank;
}
public DataTemplate SelectedRed
{
get;
set;
}
public DataTemplate SelectedBlue
{
get;
set;
}
public DataTemplate SelectedGreen
{
get;
set;
}
public DataTemplate SelectedYellow
{
get;
set;
}
public DataTemplate SelectedBlank
{
get;
set;
}
}
}