Registering this event when drawing Polyline
private void techpolyline_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
MapPolyline rightClickPolyline;
ContextMenu mainMenu = new ContextMenu();
mainMenu.Background =
Brushes.LightBlue;
mainMenu.Height = 50;
mainMenu.Width = 120;
MenuItem baseItem = new MenuItem();
baseItem.Width = 120;
baseItem.Header =
"Select Action";
baseItem.Background =
Brushes.Blue;
baseItem.Foreground =
Brushes.White;
baseItem.FontWeight =
FontWeights.Bold;
mainMenu.Items.Add(baseItem);
MenuItem hidepolygonItem = new MenuItem();
hidepolygonItem.Width = 120;
hidepolygonItem.Header =
"Hide Polyline";
mainMenu.Items.Add(hidepolygonItem);
//hidepolygonItem.PreviewMouseLeftButtonDown +=new MouseButtonEventHandler(hidepolygonItem_PreviewMouseLeftButtonDown);
if (sender.GetType() == typeof(MapPolyline))
{
rightClickPolyline = (
MapPolyline)sender;
rightClickPolyline.ContextMenu = mainMenu;
}
}
<
Window
x:Class
=
"WpfApplication1.MainWindow"
Title
=
"MainWindow"
Height
=
"350"
Width
=
"525"
Loaded
=
"Window_Loaded"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
>
<
Grid
>
<
DockPanel
Name
=
"LayoutRoot"
/>
<
MediaElement
Canvas.Left
=
"20"
Canvas.Top
=
"40"
Name
=
"VideoControl"
LoadedBehavior
=
"Play"
UnloadedBehavior
=
"Stop"
/>
<
telerik:RadButton
telerik:StyleManager.Theme
=
"Transparent"
Content
=
"Close"
Height
=
"Auto"
HorizontalAlignment
=
"Left"
Margin
=
"26,199,0,0"
Name
=
"PlayButton"
VerticalAlignment
=
"Top"
Width
=
"Auto"
Click
=
"PlayButton_Click"
Visibility
=
"Visible"
/>
</
Grid
>
</
Window
>
namespace
WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public
partial
class
MainWindow : Window
{
public
MainWindow()
{
bool
fullscreen =
false
;
InitializeComponent();
VideoControl.Volume = 100;
VideoControl.MouseMove +=
delegate
{
//fullscreen mode
if
(!fullscreen)
{
//LayoutRoot.Children.Remove(VideoControl);
//this.Content = VideoControl;
this
.WindowStyle = WindowStyle.None;
this
.WindowState = WindowState.Maximized;
VideoControl.Width = 1850;
VideoControl.Height = 1850;
}
else
{
//non fullscreen mode
//this.Content = LayoutRoot;
//LayoutRoot.Children.Add(VideoControl);
this
.WindowStyle = WindowStyle.SingleBorderWindow;
this
.WindowState = WindowState.Normal;
VideoControl.Width = 1000;
VideoControl.Height = 1000;
}
fullscreen = !fullscreen;
};
}
private
void
Window_Loaded(
object
sender, RoutedEventArgs e)
{
VideoControl.Source =
new
Uri(
"C:\\Users\\Public\\Videos\\Sample Videos\\Wildlife.wmv"
);
}
private
void
PlayButton_Click(
object
sender, RoutedEventArgs e)
{
//VideoControl.Play();
Close();
}
}
}
DataLoadMode="Asynchronous"
ScrollMode="Deferred"
EnableRowVirtualization="True"
<
Telerik:RadGridView
x:Name
=
"ResultGrid"
Grid.Row
=
"1"
VerticalAlignment
=
"Stretch"
CanUserReorderColumns
=
"False"
AutoGenerateColumns
=
"False"
Height
=
"Auto"
ScrollMode
=
"Deferred"
DataLoadMode
=
"Asynchronous"
EnableRowVirtualization
=
"True"
ShowGroupPanel
=
"False"
Margin
=
"2"
IsReadOnly
=
"True"
BorderThickness
=
"2"
>
<
Telerik:RadGridView.ChildTableDefinitions
>
<
Telerik:GridViewTableDefinition
>
</
Telerik:GridViewTableDefinition
>
</
Telerik:RadGridView.ChildTableDefinitions
>
<
Telerik:RadGridView.Columns
>
<
Telerik:GridViewDataColumn
Header
=
"Mission"
DataMemberBinding
=
"{Binding MissionName, Mode=OneWay}"
IsReadOnly
=
"True"
/>
<
Telerik:GridViewDataColumn
Header
=
"Antenna"
DataMemberBinding
=
"{Binding AntennaName, Mode=OneWay}"
IsReadOnly
=
"True"
/>
</
Telerik:RadGridView.Columns
>
<
Telerik:RadGridView.HierarchyChildTemplate
>
<
DataTemplate
>
<
Telerik:RadGridView
x:Name
=
"ResultGridChild"
CanUserFreezeColumns
=
"False"
AutoGenerateColumns
=
"True"
ItemsSource
=
"{Binding Locations}"
ShowGroupPanel
=
"False"
IsReadOnly
=
"True"
IsFilteringAllowed
=
"False"
CanUserDeleteRows
=
"False"
CanUserInsertRows
=
"False"
CanUserResizeColumns
=
"False"
CanUserReorderColumns
=
"False"
CanUserSelect
=
"False"
CanUserSortColumns
=
"False"
>
<
Telerik:RadGridView.Columns
>
<
Telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Latitude}"
Header
=
"Latitude"
/>
<
Telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Longitude}"
Header
=
"Longitude"
/>
<
Telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Longitude}"
Header
=
"Altitude"
/>
<
Telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Value}"
Header
=
"Value"
/>
</
Telerik:RadGridView.Columns
>
</
Telerik:RadGridView
>
</
DataTemplate
>
</
Telerik:RadGridView.HierarchyChildTemplate
>
</
Telerik:RadGridView
>
Stacktrace :
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.String.System.IConvertible.ToInt32(IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at Telerik.Windows.Data.Expressions.FilterDescriptorExpressionBuilder.CreateValueExpression(Type targetType, Object value, CultureInfo culture)
at CustomFilterDescriptor.CreateFilterExpression(ParameterExpression parameterExpression) in \CustomFilterDescriptor.cs:line 45
at Telerik.Windows.Data.FilterDescriptorBase.CreateFilterExpression(Expression instance)
at Telerik.Windows.Data.Expressions.FilterDescriptorCollectionExpressionBuilder.CreateBodyExpression()
at Telerik.Windows.Data.Expressions.FilterExpressionBuilder.CreateFilterExpression()
at Telerik.Windows.Data.QueryableExtensions.Where(IQueryable source, CompositeFilterDescriptorCollection filterDescriptors)
at Telerik.Windows.Data.QueryableCollectionView.CreateView()
at Telerik.Windows.Data.QueryableCollectionView.get_QueryableView()
at Telerik.Windows.Data.QueryableCollectionView.CreateInternalList()
at Telerik.Windows.Data.QueryableCollectionView.EnsureInternalList()
at Telerik.Windows.Data.QueryableCollectionView.get_InternalList()
at Telerik.Windows.Data.QueryableCollectionView.get_InternalCount()
at Telerik.Windows.Data.QueryableCollectionView.get_IsEmpty()
at Telerik.Windows.Data.QueryableCollectionView.InitializeCurrencyOnRefresh()
at Telerik.Windows.Data.QueryableCollectionView.RefreshOverride()
at Telerik.Windows.Data.QueryableCollectionView.RefreshInternal()
at Telerik.Windows.Data.QueryableCollectionView.RefreshOrDefer()
at Telerik.Windows.Data.QueryableCollectionView.InvalidatePagingAndRefresh()
at Telerik.Windows.Data.QueryableCollectionView.OnFilterDescriptorsItemChanged(Object sender, ItemChangedEventArgs`1 e)
at Telerik.Windows.Data.ObservableItemCollection`1.RaiseGenericItemChanged(ItemChangedEventArgs`1 e)
at Telerik.Windows.Data.ObservableItemCollection`1.OnItemChanged(ItemChangedEventArgs`1 e)
at Telerik.Windows.Data.ObservableItemCollection`1.OnItemPropertyChanged(Object sender, PropertyChangedEventArgs e)
at System.ComponentModel.PropertyChangedEventHandler.Invoke(Object sender, PropertyChangedEventArgs e)
at Telerik.Windows.Data.DescriptorBase.OnPropertyChanged(PropertyChangedEventArgs args)
at Telerik.Windows.Data.DescriptorBase.OnPropertyChanged(String propertyName)
at CustomFilterDescriptor.set_FilterValue(String value) in CustomFilterDescriptor.cs:line 32
at FilterValueTextChanged(Object sender, TextChangedEventArgs e) in MyClass.xaml.cs:line 43
at System.Windows.Controls.TextChangedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
at System.Windows.Controls.Primitives.TextBoxBase.OnTextChanged(TextChangedEventArgs e)
at System.Windows.Controls.Primitives.TextBoxBase.OnTextContainerChanged(Object sender, TextContainerChangedEventArgs e)
at System.Windows.Controls.TextBox.OnTextContainerChanged(Object sender, TextContainerChangedEventArgs e)
at System.Windows.Documents.TextContainerChangedEventHandler.Invoke(Object sender, TextContainerChangedEventArgs e)
at System.Windows.Documents.TextContainer.EndChange(Boolean skipEvents)
at System.Windows.Documents.TextContainer.System.Windows.Documents.ITextContainer.EndChange(Boolean skipEvents)
at System.Windows.Documents.TextRangeBase.EndChange(ITextRange thisRange, Boolean disableScroll, Boolean skipEvents)
at System.Windows.Documents.TextRange.System.Windows.Documents.ITextRange.EndChange(Boolean disableScroll, Boolean skipEvents)
at System.Windows.Documents.TextRange.ChangeBlock.System.IDisposable.Dispose()
at System.Windows.Documents.TextEditorTyping.DoTextInput(TextEditor This, String textData, Boolean isInsertKeyToggled, Boolean acceptControlCharacters)
at System.Windows.Documents.TextEditorTyping.TextInputItem.Do()
at System.Windows.Documents.TextEditorTyping.ScheduleInput(TextEditor This, InputItem item)
at System.Windows.Documents.TextEditorTyping.OnSpace(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.Input.CommandBinding.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.Input.CommandManager.ExecuteCommandBinding(Object sender, ExecutedRoutedEventArgs e, CommandBinding commandBinding)
at System.Windows.Input.CommandManager.FindCommandBinding(CommandBindingCollection commandBindings, Object sender, RoutedEventArgs e, ICommand command, Boolean execute)
at System.Windows.Input.CommandManager.FindCommandBinding(Object sender, RoutedEventArgs e, ICommand command, Boolean execute)
at System.Windows.Input.CommandManager.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.UIElement.OnExecutedThunk(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.Input.ExecutedRoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object target)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
at System.Windows.Input.RoutedCommand.ExecuteImpl(Object parameter, IInputElement target, Boolean userInitiated)
at System.Windows.Input.RoutedCommand.ExecuteCore(Object parameter, IInputElement target, Boolean userInitiated)
at System.Windows.Input.CommandManager.TranslateInput(IInputElement targetElement, InputEventArgs inputEventArgs)
at System.Windows.UIElement.OnKeyDownThunk(Object sender, KeyEventArgs e)
at System.Windows.Input.KeyEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
at System.Windows.Interop.HwndKeyboardInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawKeyboardActions actions, Int32 scanCode, Boolean isExtendedKey, Boolean isSystemKey, Int32 virtualKey)
at System.Windows.Interop.HwndKeyboardInputProvider.ProcessKeyAction(MSG& msg, Boolean& handled)
at System.Windows.Interop.HwndSource.CriticalTranslateAccelerator(MSG& msg, ModifierKeys modifiers)
at System.Windows.Interop.HwndSource.OnPreprocessMessage(Object param)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg)
at System.Windows.Interop.HwndSource.OnPreprocessMessageThunk(MSG& msg, Boolean& handled)
at System.Windows.Interop.HwndSource.WeakEventPreprocessMessage.OnPreprocessMessage(MSG& msg, Boolean& handled)
at System.Windows.Interop.ThreadMessageEventHandler.Invoke(MSG& msg, Boolean& handled)
at System.Windows.Interop.ComponentDispatcherThread.RaiseThreadMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.Run()
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run(Window window)
Any idea ?
Thanks by advance.
Xavier
I have a work around solution to change the background colour of the selected date. Please if anyone can improve the code or have a better solution can please update me.
XAML Code
<
Window
x:Class
=
"TelerikDateSelectCal.Window1"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
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
;
}
}
}
Not best of the code, it's too lengthy and needs improvement so please le me know if you have improved it.
Thanks
Rahul