Hi,
I'm new using these components, try to follow the example of how to create a template but the ide I get the following error message
"The type 'my:CustomTemplateSelector' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built."
XAML
C#
What am I doing wrong?
I'm new using these components, try to follow the example of how to create a template but the ide I get the following error message
"The type 'my:CustomTemplateSelector' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built."
XAML
<
controls:WindowMain
xmlns:telerikNavigation
=
"clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Navigation"
xmlns:telerikGridView
=
"clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.GridView"
Width
=
"800"
Height
=
"550"
xmlns:controls
=
"clr-namespace:FrameworkWeb.Controls;assembly=FrameworkWeb.Controls"
x:Class
=
"FrameworkWeb.TimeOff.Vistas.Request"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
>
<
Border
x:Name
=
"LayouRoot"
CornerRadius
=
"9"
Background
=
"White"
>
<
Grid
x:Name
=
"Objects"
>
<
TextBlock
Name
=
"Message"
Text
=
"Loading records..."
VerticalAlignment
=
"Top"
HorizontalAlignment
=
"Right"
Margin
=
"8"
Foreground
=
"Red"
/>
<
telerik:RadCalendar
Name
=
"radCalendarDates"
VerticalAlignment
=
"Top"
HorizontalAlignment
=
"Right"
Height
=
"196"
SelectionMode
=
"Extended"
Culture
=
"en-US"
DayTemplate
=
"{x:Null}"
>
<
telerik:RadCalendar.DayTemplateSelector
>
<!--Custom Template selector, sill actually choose just one template-->
<
my:CustomTemplateSelector
>
<
my:CustomTemplateSelector.DefaultTemplate
>
<!--A custom template-->
<
DataTemplate
x:Key
=
"defaultTemplate"
>
<
TextBlock
Text
=
"{Binding Text}"
/>
</
DataTemplate
>
</
my:CustomTemplateSelector.DefaultTemplate
>
</
my:CustomTemplateSelector
>
</
telerik:RadCalendar.DayTemplateSelector
>
</
telerik:RadCalendar
>
<
telerikGridView:RadGridView
HorizontalAlignment
=
"Stretch"
Margin
=
"0,219,0,37"
Name
=
"rgvTimeOff"
VerticalAlignment
=
"Stretch"
AutoGenerateColumns
=
"False"
RowIndicatorVisibility
=
"Collapsed"
KeyDown
=
"rgvTimeOff_KeyDown"
SelectionUnit
=
"FullRow"
RowDetailsVisibilityChanged
=
"rgvTimeOff_RowDetailsVisibilityChanged"
IsReadOnly
=
"True"
SelectionMode
=
"Extended"
RowLoaded
=
"rgvTimeOff_RowLoaded"
>
<
telerikGridView:RadGridView.Columns
>
<
telerikGridView:GridViewToggleRowDetailsColumn
/>
<
telerikGridView:GridViewDataColumn
Header
=
"Id"
DataMemberBinding
=
"{Binding Id}"
IsVisible
=
"False"
/>
<
telerikGridView:GridViewDataColumn
Header
=
"Request Number"
DataMemberBinding
=
"{Binding DepartmentName}"
Width
=
"*"
/>
<
telerikGridView:GridViewDataColumn
Header
=
"Date"
DataMemberBinding
=
"{Binding DepartmentName}"
Width
=
"*"
/>
<
telerikGridView:GridViewDataColumn
Header
=
"Day"
DataMemberBinding
=
"{Binding DepartmentName}"
Width
=
"*"
/>
<
telerikGridView:GridViewDataColumn
Header
=
"Licence Type"
DataMemberBinding
=
"{Binding DepartmentName}"
Width
=
"*"
/>
<
telerikGridView:GridViewDataColumn
Header
=
"Licence SubType"
DataMemberBinding
=
"{Binding DepartmentNumber}"
/>
<
telerikGridView:GridViewDataColumn
Header
=
"Request Hours"
DataMemberBinding
=
"{Binding Comments}"
/>
</
telerikGridView:RadGridView.Columns
>
</
telerikGridView:RadGridView
>
<
Border
BorderBrush
=
"Gray"
CornerRadius
=
"0,0,9,9"
BorderThickness
=
"0,0.5,0,0"
RenderTransformOrigin
=
"0.5,0.5"
VerticalAlignment
=
"Bottom"
Height
=
"40"
Background
=
"Black"
>
<
Grid
>
<
StackPanel
x:Name
=
"ToolBarButtons"
Orientation
=
"Horizontal"
ScrollViewer.HorizontalScrollBarVisibility
=
"Disabled"
/>
<
StackPanel
x:Name
=
"ToolBarButtonsMove"
Orientation
=
"Horizontal"
HorizontalAlignment
=
"Right"
ScrollViewer.HorizontalScrollBarVisibility
=
"Disabled"
/>
</
Grid
>
</
Border
>
<
TextBlock
Height
=
"23"
HorizontalAlignment
=
"Left"
Margin
=
"10,10,0,0"
Name
=
"textBlock1"
Text
=
"Licence Type:"
VerticalAlignment
=
"Top"
/>
<
ComboBox
Height
=
"23"
HorizontalAlignment
=
"Left"
Margin
=
"120,8,0,0"
Name
=
"cmbLicenceType"
VerticalAlignment
=
"Top"
Width
=
"200"
/>
<
TextBlock
Height
=
"23"
HorizontalAlignment
=
"Left"
Margin
=
"10,40,0,0"
Name
=
"textBlock2"
Text
=
"Licence Sub Type:"
VerticalAlignment
=
"Top"
/>
<
ComboBox
Height
=
"23"
HorizontalAlignment
=
"Left"
Margin
=
"120,38,0,0"
Name
=
"cmbLicenceSubType"
VerticalAlignment
=
"Top"
Width
=
"200"
/>
<
TextBlock
Height
=
"23"
HorizontalAlignment
=
"Left"
Margin
=
"10,70,0,0"
Text
=
"Supervisor:"
VerticalAlignment
=
"Top"
/>
<
TextBox
Height
=
"23"
HorizontalAlignment
=
"Left"
Margin
=
"120,68,10,0"
Name
=
"txtSupervisor"
VerticalAlignment
=
"Top"
Width
=
"200"
IsReadOnly
=
"True"
/>
<
TextBlock
Height
=
"23"
HorizontalAlignment
=
"Left"
Margin
=
"10,95,0,0"
Text
=
"Balance:"
VerticalAlignment
=
"Top"
/>
<
TextBox
Height
=
"23"
HorizontalAlignment
=
"Left"
Margin
=
"120,92,0,0"
Name
=
"txtBalance"
VerticalAlignment
=
"Top"
Width
=
"200"
IsReadOnly
=
"True"
/>
<
TextBlock
Height
=
"23"
HorizontalAlignment
=
"Left"
Margin
=
"10,117,0,0"
Name
=
"textBlock4"
Text
=
"Comments:"
VerticalAlignment
=
"Top"
/>
<
RichTextBox
HorizontalAlignment
=
"Left"
Margin
=
"120,117,0,0"
Name
=
"rctxtComments"
VerticalAlignment
=
"Top"
Width
=
"416"
Height
=
"101"
/>
</
Grid
>
</
Border
>
</
controls:WindowMain
>
C#
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Net;
using
System.Windows;
using
System.Windows.Controls;
using
System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Animation;
using
System.Windows.Shapes;
using
FrameworkWeb.Resource;
using
FrameworkWeb.Controls;
using
FrameworkWeb.Utilities;
using
System.Data.Services.Client;
using
System.ComponentModel;
using
System.Windows.Data;
using
System.ComponentModel.DataAnnotations;
using
FrameworkWeb.TimeOff.Dto;
using
Telerik.Windows.Controls.GridView;
using
Telerik.Windows.Controls;
using
Telerik.Windows.Controls.Calendar;
namespace
FrameworkWeb.TimeOff.Vistas
{
public
partial
class
Request : WindowMain
{
#region Variables
Data.DataAccess _dataAccess =
new
Data.DataAccess();
List<Data.Service.Status> _statusList =
new
List<Data.Service.Status>();
List<String> _statusNameList =
new
List<String>();
List<JobTitleDto> _recordsList =
new
List<JobTitleDto>();
Generals _utilGenerals =
new
Generals();
#endregion
#region Inicializaciones
public
Request()
{
this
.InitializeComponent();
this
.InitializeToolBar();
this
.InitializeStatusList();
this
.InitializeRecordsList();
}
private
void
InitializeToolBar()
{
ToolBarButton _refreshBtn =
new
ToolBarButton(
"Imagenes/Refresh.png"
,
"Refresh"
,
"Refresh list"
);
_refreshBtn.Click +=
new
RoutedEventHandler(Refresh_Record);
this
.ToolBarButtons.Children.Add(_refreshBtn);
ToolBarButton _newBtn =
new
ToolBarButton(
"Imagenes/New.png"
,
"New"
,
"New Record"
);
_newBtn.Click +=
new
RoutedEventHandler(New_Record);
this
.ToolBarButtons.Children.Add(_newBtn);
ToolBarButton _deleteBtn =
new
ToolBarButton(
"Imagenes/Remove.png"
,
"Delete"
,
"Delete records"
);
_deleteBtn.Click +=
new
RoutedEventHandler(Delete_Record);
this
.ToolBarButtons.Children.Add(_deleteBtn);
ToolBarButton _saveBtn =
new
ToolBarButton(
"Imagenes/Save.png"
,
"Save"
,
"Save Records"
);
_saveBtn.Click +=
new
RoutedEventHandler(Save_Record);
this
.ToolBarButtons.Children.Add(_saveBtn);
ToolBarButton _printBtn =
new
ToolBarButton(
"Imagenes/Print.png"
,
"Print"
,
"Print List"
);
_printBtn.Click +=
new
RoutedEventHandler(Print_Record);
this
.ToolBarButtons.Children.Add(_printBtn);
}
private
void
InitializeStatusList()
{
var _query = ((DataServiceQuery<Data.Service.Status>)(from s
in
_dataAccess._dataContext.Status
orderby s.Name
select s));
_query.BeginExecute(r =>
{
Deployment.Current.Dispatcher.BeginInvoke(
delegate
()
{
// Cargar el resultado del query a una variable
var _items = _query.EndExecute(r).ToList();
_statusList.Clear();
_statusNameList.Clear();
foreach
(var _item
in
_items)
{
_statusList.Add(_item);
_statusNameList.Add(_item.Name);
}
});
},
null
);
}
private
void
InitializeRecordsList()
{
_utilGenerals.DisplayText(
this
.Message,
"Loading records..."
);
var _query = ((DataServiceQuery<Data.Service.JobTitles>)(from j
in
_dataAccess._dataContext.JobTitles
orderby j.Title
select j)).Expand(
"Status"
);
_query.BeginExecute(r =>
{
Deployment.Current.Dispatcher.BeginInvoke(
delegate
()
{
var _items = _query.EndExecute(r).ToList();
_recordsList.Clear();
this
.rgvTimeOff.ItemsSource =
null
;
foreach
(var _item
in
_items)
{
_recordsList.Add(
new
JobTitleDto()
{
JobTitle = _item.Title,
StatusName = _item.Status.Name,
CreationDate = (DateTime)_item.CreationDate,
ModifiedDate = (DateTime)_item.ModifiedDate,
ID = _item.Id,
StatusID = _item.Status.Id,
JobComments = _item.Comments,
JobScale = (Int32)_item.Scale,
JobTitleRecord = _item,
Updated =
false
});
}
// Cargar finalmente la grilla
this
.rgvTimeOff.ItemsSource = _recordsList;
_utilGenerals.DisplayText(
this
.Message, String.Empty);
});
},
null
);
}
#endregion
#region Control de los botones de la barra de herramientas
void
New_Record(
object
sender, RoutedEventArgs e)
{
MessageBox.Show(
"Under construction"
,
this
.WindowControlBase.TitleWindows, MessageBoxButton.OK);
}
void
Delete_Record(
object
sender, RoutedEventArgs e)
{
MessageBox.Show(
"Under construction"
,
this
.WindowControlBase.TitleWindows, MessageBoxButton.OK);
}
void
Save_Record(
object
sender, RoutedEventArgs e)
{
MessageBox.Show(
"Under construction"
,
this
.WindowControlBase.TitleWindows, MessageBoxButton.OK);
}
void
Refresh_Record(
object
sender, RoutedEventArgs e)
{
if
(
this
.RecordsChanged())
{
if
(MessageBox.Show(
"There are records without saving\nChanges will be lost. Continue?"
,
this
.WindowControlBase.TitleWindows, MessageBoxButton.OKCancel) == MessageBoxResult.OK)
this
.Refresh();
}
else
this
.Refresh();
}
void
Print_Record(
object
sender, RoutedEventArgs e)
{
}
#endregion
#region Funcionaidades generales
private
void
Refresh()
{
_dataAccess =
new
Data.DataAccess();
this
.InitializeStatusList();
this
.InitializeRecordsList();
}
private
void
Save(Boolean inShowResult)
{
}
private
Boolean RecordsChanged()
{
Boolean _return =
false
;
foreach
(var _record
in
_recordsList)
{
if
(_record.Updated)
{
_return =
true
;
break
;
}
}
return
_return;
}
private
void
Delete()
{
}
private
void
Insert()
{
}
private
void
rgvTimeOff_KeyDown(
object
sender, KeyEventArgs e)
{
//if (e.Key == Key.Delete)
// this.Delete();
//if (e.Key == Key.Insert)
// this.Insert();
}
private
void
rgvTimeOff_RowDetailsVisibilityChanged(
object
sender, GridViewRowDetailsEventArgs e)
{
if
(e.Visibility.Value == System.Windows.Visibility.Visible)
{
e.Row.IsSelected =
true
;
}
}
private
void
rgvTimeOff_RowLoaded(
object
sender, RowLoadedEventArgs e)
{
}
public
override
void
endAsyncRequest()
{
for
(
int
i =
this
._asyncCallBackList.Count - 1; i >= 0; i--)
{
switch
(
this
._asyncCallBackList[i].key)
{
case
"Save"
:
case
"Delete"
:
this
.Refresh();
Int32 _recordsOK = Convert.ToInt32(((List<String>)
this
._asyncCallBackList[i].responseAsync)[0]);
Int32 _recordsBad = Convert.ToInt32(((List<String>)
this
._asyncCallBackList[i].responseAsync)[1]);
String _recordsErrors = ((List<String>)
this
._asyncCallBackList[i].responseAsync)[2];
String _message = String.Format(
"{0} records {1} OK"
, _recordsOK,
this
._asyncCallBackList[i].key ==
"Save"
?
"Saved"
:
"Deleted"
);
if
(_recordsBad > 0)
_message += String.Format(
"\n but {0} records with errors\nErrors: {1}"
, _recordsOK, _recordsErrors);
MessageBox.Show(_message,
this
.WindowControlBase.TitleWindows, MessageBoxButton.OK);
break
;
default
:
break
;
}
this
._asyncCallBackList.RemoveAt(i);
}
}
#endregion
}
public
class
CustomTemplateSelector : DataTemplateSelector
{
public
override
DataTemplate SelectTemplate(
object
item, DependencyObject container)
{
CalendarButtonContent content = item
as
CalendarButtonContent;
if
(content !=
null
)
{
if
(content.Date.DayOfWeek == DayOfWeek.Saturday || content.Date.DayOfWeek == DayOfWeek.Sunday)
{
content.IsEnabled =
false
;
}
}
return
DefaultTemplate;
}
public
DataTemplate DefaultTemplate
{
get
;
set
;
}
}
}
What am I doing wrong?