<
Grid
>
<
Grid.Resources
>
<
ResourceDictionary
>
<
ResourceDictionary.MergedDictionaries
>
<
ResourceDictionary
Source
=
"Styles.xaml"
/>
</
ResourceDictionary.MergedDictionaries
>
</
ResourceDictionary
>
</
Grid.Resources
>
<
telerik:RadDataForm
x:Name
=
"DataForm"
>
<
telerik:RadDataForm.ReadOnlyTemplate
>
<
DataTemplate
>
<
TextBox
x:Name
=
"textBox"
Width
=
"200"
ContextMenu
=
"{x:Null}"
VerticalAlignment
=
"Top"
Margin
=
"141,125,176,0"
>
<
telerik:RadContextMenu.ContextMenu
>
<
telerik:RadContextMenu
x:Name
=
"ContextMenuHugo"
ItemContainerStyle
=
"{StaticResource MenuItemContainer}"
Opening
=
"ContextMenuHugo_OnOpening"
>
</
telerik:RadContextMenu
>
</
telerik:RadContextMenu.ContextMenu
>
</
TextBox
>
</
DataTemplate
>
</
telerik:RadDataForm.ReadOnlyTemplate
>
</
telerik:RadDataForm
>
<
TextBox
x:Name
=
"textBox"
Width
=
"200"
ContextMenu
=
"{x:Null}"
VerticalAlignment
=
"Top"
Margin
=
"141,125,176,0"
>
<
telerik:RadContextMenu.ContextMenu
>
<
telerik:RadContextMenu
x:Name
=
"ContextMenuHugo"
ItemContainerStyle
=
"{StaticResource MenuItemContainer}"
>
</
telerik:RadContextMenu
>
</
telerik:RadContextMenu.ContextMenu
>
</
TextBox
>
</
Grid
>
I want to put some text in the footer of a column in my gridview. However I can't get the binding to work.
I'm using MVVM. I have one viewmodel for the whole form including the gridview (let's call this MainViewModel) and also one viewmodel per row in the gridview (RowViewModel).
The text I want to show in the footer is in MainViewModel (let's call the property FooterText). How can I bind the text of the footer to this property?
My footer looks like this:
<
telerikGridView:GridViewDataColumn.Footer
>
<
TextBlock
Text
=
"Testing"
/>
</
telerikGridView:GridViewDataColumn.Footer
>
This example works and displays the text "Testing" in the footer. But my problems starts when I try to set the text using binding instead.
This doesn't work:
<
telerikGridView:GridViewDataColumn.Footer
>
<
TextBlock
Text
=
"{Binding Path=FooterText}"
/>
</
telerikGridView:GridViewDataColumn.Footer
>
I've tried this:
<
telerikGridView:GridViewDataColumn.Footer
>
<
TextBlock
Text
=
"{Binding ElementName=LayoutRoot, Path=DataContext.FooterText}"
/>
</
telerikGridView:GridViewDataColumn.Footer
>
LayoutRoot is the Grid that is the root element of the form that the gridview resides in. This does not work. What confuses me is that I can bind the Header of the column in the exact way and it works:
<
telerikGridView:GridViewDataColumn
Header
=
"{Binding ElementName=LayoutRoot, Path=DataContext.FooterText}"
... >
I've also tried this:
<
telerikGridView:GridViewDataColumn.Footer
>
<
TextBlock
Text
=
"{Binding Path=DataContext.FooterText, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=telerikGridView:RadGridView}}"
/>
</
telerikGridView:GridViewDataColumn.Footer
>
This didn't work neither.
Any more ideas?
<
Window.Resources
>
<
my:MyViewModel
x:Key
=
"MyViewModel"
/>
<
Style
x:Key
=
"CalendarStyle"
TargetType
=
"telerik:RadCalendar"
BasedOn
=
"{StaticResource {telerik:ThemeResourceKey ThemeType=telerik:Expression_DarkTheme, ElementType=telerik:RadCalendar}}"
>
<
Setter
Property
=
"AreWeekNumbersVisible"
Value
=
"False"
/>
</
Style
>
<
Style
TargetType
=
"{x:Type telerik:RadDateTimePicker}"
BasedOn
=
"{StaticResource {telerik:ThemeResourceKey ThemeType=telerik:Expression_DarkTheme, ElementType=telerik:RadDateTimePicker}}"
>
<
Setter
Property
=
"CalendarStyle"
>
<
Setter.Value
>
<
Style
BasedOn
=
"{StaticResource CalendarStyle}"
TargetType
=
"telerik:RadCalendar"
>
</
Style
>
</
Setter.Value
>
</
Setter
>
</
Style
>
</
Window.Resources
>
<
Grid
DataContext
=
"{StaticResource MyViewModel}"
>
<
telerik:RadGridView
Grid.Row
=
"0"
Name
=
"clubsGrid"
ItemsSource
=
"{Binding Clubs}"
AutoGenerateColumns
=
"False"
Margin
=
"5"
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Name}"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Established}"
Header
=
"Est."
DataFormatString
=
"{}{0:yyyy/MM/dd}"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding StadiumCapacity}"
Header
=
"Stadium"
DataFormatString
=
"{}{0:N0}"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
</
Grid
>
<
Window
x:Class
=
"TwoDynamic.MainWindow"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
Title
=
"MainWindow"
Height
=
"350"
Width
=
"525"
>
<
Window.Resources
>
<
CollectionViewSource
x:Key
=
"FirstList"
Source
=
"{Binding Path=Series1}"
/>
<
CollectionViewSource
x:Key
=
"SecondList"
Source
=
"{Binding Path=Series2}"
/>
<
CompositeCollection
x:Key
=
"NewList"
>
<
CollectionContainer
Collection
=
"{Binding Source={StaticResource FirstList}}"
/>
<
CollectionContainer
Collection
=
"{Binding Source={StaticResource SecondList}}"
/>
</
CompositeCollection
>
</
Window.Resources
>
<
Grid
>
<
telerik:RadCartesianChart
>
<
telerik:RadCartesianChart.Resources
>
<
Style
TargetType
=
"telerik:LineSeries"
>
<
Setter
Property
=
"StrokeThickness"
Value
=
"2"
/>
<
Setter
Property
=
"Stroke"
Value
=
"Blue"
/>
</
Style
>
<
Style
TargetType
=
"telerik:BarSeries"
>
<
Setter
Property
=
"CombineMode"
Value
=
"None"
/>
</
Style
>
</
telerik:RadCartesianChart.Resources
>
<
telerik:RadCartesianChart.VerticalAxis
>
<
telerik:LinearAxis
/>
</
telerik:RadCartesianChart.VerticalAxis
>
<
telerik:RadCartesianChart.HorizontalAxis
>
<
telerik:DateTimeContinuousAxis
LabelFitMode
=
"Rotate"
LabelFormat
=
"MMM-dd"
/>
</
telerik:RadCartesianChart.HorizontalAxis
>
<
telerik:RadCartesianChart.SeriesProvider
>
<
telerik:ChartSeriesProvider
Source
=
"{StaticResource NewList}"
>
<
telerik:ChartSeriesProvider.SeriesDescriptors
>
<
telerik:CategoricalSeriesDescriptor
ItemsSourcePath
=
"Data"
TypePath
=
"SeriesType"
CategoryPath
=
"Date"
ValuePath
=
"Value"
/>
</
telerik:ChartSeriesProvider.SeriesDescriptors
>
</
telerik:ChartSeriesProvider
>
</
telerik:RadCartesianChart.SeriesProvider
>
</
telerik:RadCartesianChart
>
</
Grid
>
</
Window
>
namespace
TwoDynamic
{
public
class
DataPoint
{
public
DateTime Date {
get
;
set
; }
public
double
Value {
get
;
set
; }
}
public
class
SeriesBase
{
public
ObservableCollection<DataPoint> Data {
get
;
set
; }
public
Type SeriesType {
get
{
return
SeriesTypeOverride; } }
public
virtual
Type SeriesTypeOverride {
get
{
return
null
; } }
}
public
class
PointData : SeriesBase
{
public
override
Type SeriesTypeOverride {
get
{
return
typeof
(BarSeries); } }
}
public
class
LineData : SeriesBase
{
public
override
Type SeriesTypeOverride {
get
{
return
typeof
(LineSeries); } }
}
public
class
ViewModel
{
private
Random _Random =
new
Random();
public
ObservableCollection<SeriesBase> Series1 {
get
;
private
set
; }
public
ObservableCollection<SeriesBase> Series2 {
get
;
private
set
; }
public
ViewModel()
{
Series1 =
new
ObservableCollection<SeriesBase>();
Series1.Add(
new
PointData() { Data = GenerateSomeData() });
Series1.Add(
new
PointData() { Data = GenerateSomeData() });
Series2 =
new
ObservableCollection<SeriesBase>();
Series2.Add(
new
LineData() { Data = GenerateSomeData() });
Series2.Add(
new
LineData() { Data = GenerateSomeData() });
}
private
ObservableCollection<DataPoint> GenerateSomeData()
{
ObservableCollection<DataPoint> newCollection =
new
ObservableCollection<DataPoint>();
for
(
int
i = 0; i < 10; i++)
newCollection.Add(
new
DataPoint() { Date =
new
DateTime(2012, 12, 31).AddDays(i), Value = _Random.Next(100) });
return
newCollection;
}
}
}