Every time I use RadWindow e.g:
RadWindow.Alert(new DialogParameters() { Content = "Hello" });
i get following binding error:
System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='<null>' BindingExpression:Path=(0); DataItem='RadWindow' (Name=''); target element is 'WindowHostWindow' (Name=''); target property is 'Title' (type 'String')
I even tested it on visual studio base wpf app template - still the same error.
Is there any way to fix it ?
<telerik:RadGridView Height="Auto" Width="Auto" x:Name="RadGridViewBilling" RowLoaded="RadGridView_RowLoaded" Margin="5 0 5 5" Visibility="Visible" RowDetailsVisibilityMode="Collapsed"
RowIndicatorVisibility="Collapsed" IsReadOnly="True" AutoGenerateColumns="False" CanUserFreezeColumns="False" Grid.Row="2"
CanUserResizeColumns="False" SelectionMode="Extended" ShowColumnFooters="True" SelectionChanged="RadGridViewBilling_SelectionChanged">
<telerik:RadGridView.RowStyle>
<Style TargetType="telerik:GridViewRow">
<Setter Property="MinHeight" Value="40"/>
</Style>
</telerik:RadGridView.RowStyle>
<telerik:RadGridView.Columns>
<telerik:GridViewSelectColumn />
<telerik:GridViewToggleRowDetailsColumn />
<telerik:GridViewDataColumn Header="No" DataMemberBinding="{Binding Number}" IsGroupable="False" IsFilterable="False"/>
<telerik:GridViewDataColumn Header="Role T" DataMemberBinding="{Binding RoleTech}" IsGroupable="False" IsFilterable="False" TextAlignment="Right" DataFormatString = "{}{0:c2}" />
<telerik:GridViewDataColumn Header="Role P" DataMemberBinding="{Binding RoleProf}" IsGroupable="False" IsFilterable="False" TextAlignment="Right" DataFormatString = "{}{0:c2}" />
<telerik:GridViewDataColumn Header="Montant soumis ($)" DataMemberBinding="{Binding AmountSubmitted}" >
<telerik:GridViewDataColumn.AggregateFunctions>
<telerik:SumFunction Caption="Somme: " ResultFormatString="{}{0:c2}" SourceField="AmountSubmitted"/>
</telerik:GridViewDataColumn.AggregateFunctions>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Header="Patient" DataMemberBinding="{Binding PatientName}"/>
<telerik:GridViewDataColumn Header="Erreur courante" DataMemberBinding="{Binding ErrorDescription}" Background="#A0FF0000"/>
</telerik:RadGridView.Columns>
<telerik:RadGridView.RowDetailsTemplate>
<DataTemplate>
<telerik:RadTabControl x:Name="RadTabControl1" BackgroundVisibility="Collapsed" Margin="10" VerticalAlignment="Center" Background="Transparent">
<telerik:RadTabItem Header="Transactions" DataContext="{Binding}" Height="24" Foreground="Black">
<telerik:RadGridView Height="Auto" Width="Auto" x:Name="RadGridViewTransactions" ItemsSource="{Binding Transactions}" AutoGenerateColumns="False"
CanUserFreezeColumns="False" BorderThickness="0" CanUserResizeColumns="False"
ShowGroupPanel="False"
Margin="0">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="No" DataMemberBinding="{Binding Sequence}" IsGroupable="False" IsFilterable="False" />
<telerik:GridViewDataColumn Header="Date" DataMemberBinding="{Binding CreationTime, Converter={StaticResource DConverter}}" />
<telerik:GridViewDataColumn Header="Heure" DataMemberBinding="{Binding CreationTime, Converter={StaticResource TConverter}}" IsFilterable="False" IsGroupable="False"/>
<telerik:GridViewDataColumn Header="Type" DataMemberBinding="{Binding TransactionType}" />
<telerik:GridViewDataColumn Header="Montant" DataMemberBinding="{Binding Amount}" TextAlignment="Right" DataFormatString = "{}{0:c2}" IsReadOnly="True" />
<telerik:GridViewDataColumn Header="Balance" DataMemberBinding="{Binding Balance}" TextAlignment="Right" DataFormatString = "{}{0:c2}" IsReadOnly="True" />
<telerik:GridViewDataColumn Header="Commentaire" DataMemberBinding="{Binding Comment}" Width="250" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</telerik:RadTabItem>
<telerik:RadTabItem Header="Visite" DataContext="{Binding}" Margin="5 0 0 0" Height="24" Foreground="Black">
<Grid Width="Auto" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="Patient PHN:" TextAlignment="Right" Margin="5" FontWeight="Bold" Grid.Row="0" Grid.Column="0" />
<telerik:RadMaskedTextBox x:Name="VisitPatientPHN" Value="{Binding PHN}" EmptyContent="Entrer patient PHN" MaskType="None" ValueChanged="RadMaskedTextBox_ValueChanged" Margin="5" Grid.Row="0" Grid.Column="1"/>
<TextBlock Text="Nom:" TextAlignment="Right" Margin="5" FontWeight="Bold" Grid.Row="1" Grid.Column="0" />
<telerik:RadMaskedTextBox x:Name="VisitPatientName" Value="{Binding PatientName}" EmptyContent="Entrez nom patient" MaskType="None" ValueChanged="RadMaskedTextBox_ValueChanged" Margin="5" Grid.Row="1" Grid.Column="1"/>
<TextBlock Text="Province:" TextAlignment="Right" Margin="5" FontWeight="Bold" Grid.Row="2" Grid.Column="0" />
<TextBox Text="{Binding PatientProvince}" Margin="5" Grid.Row="2" Grid.Column="1" />
<TextBlock Text="Date visite:" TextAlignment="Right" Margin="5" FontWeight="Bold" Grid.Row="0" Grid.Column="3" />
<telerik:RadDatePicker x:Name="FromTimePicker" Margin="5" IsTooltipEnabled="False" SelectionChanged="FromTimePicker_SelectionChanged" DateTimeWatermarkContent="VisitDate" SelectedValue="{Binding VisitDate, Mode=TwoWay}" Grid.Row="0" Grid.Column="4" />
<TextBlock Text="Code diag:" TextAlignment="Right" Margin="5" FontWeight="Bold" Grid.Row="1" Grid.Column="3" />
<TextBox Text="{Binding DiagCode}" Margin="5" Grid.Row="1" Grid.Column="4" />
<TextBlock Text="Code exam:" TextAlignment="Right" Margin="5" FontWeight="Bold" Grid.Row="2" Grid.Column="3" />
<TextBox Text="{Binding ExamCode}" Margin="5" Grid.Row="2" Grid.Column="4" />
<TextBlock Text="Mnt soumis:" TextAlignment="Right" Margin="5" FontWeight="Bold" Grid.Row="3" Grid.Column="3" />
<telerik:RadMaskedTextBox x:Name="VisitAmountSubmitted" MaskType="Numeric" Mask="c" Value="{Binding AmountSubmitted}" EmptyContent="Entrer montant" Background="White" ValueChanged="RadMaskedTextBox_ValueChanged" Margin="5" Grid.Row="3" Grid.Column="4"/>
<TextBlock Text="Commentaire:" TextAlignment="Left" Margin="5" FontWeight="Bold" Grid.Row="4" Grid.Column="0" />
<TextBox Text="{Binding Comment}" Margin="5" Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="4" />
</Grid>
</telerik:RadTabItem>
<telerik:RadTabItem Header="Rapport d'erreurs" DataContext="{Binding}" Height="24"
HorizontalContentAlignment="Stretch" HorizontalAlignment="Left">
<telerik:RadGridView Height="Auto" Width="Auto" x:Name="RadGridViewErrorReportElements" ItemsSource="{Binding ErrorReportElements}" RowIndicatorVisibility="Collapsed" AutoGenerateColumns="False"
CanUserFreezeColumns="False" BorderThickness="0" CanUserResizeColumns="False"
ShowGroupPanel="False"
Margin="0">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="Nom fichier" DataMemberBinding="{Binding ReceivedFileName}" />
<telerik:GridViewDataColumn Header="Date" DataMemberBinding="{Binding CreationTime, Converter={StaticResource DConverter}}" />
<telerik:GridViewDataColumn Header="Heure" DataMemberBinding="{Binding CreationTime, Converter={StaticResource TConverter}}" IsFilterable="False" IsGroupable="False"/>
<telerik:GridViewDataColumn Header="Message d'erreur" DataMemberBinding="{Binding ErrorMessage}" Width="250" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</telerik:RadTabItem>
<telerik:RadTabItem Header="E.C." DataContext="{Binding}" Margin="5 0 0 0" Height="24" HorizontalContentAlignment="Stretch" HorizontalAlignment="Left">
<telerik:RadGridView Height="Auto" Width="Auto" x:Name="RadGridViewRemittanceAdvicetElements" ItemsSource="{Binding RemittanceAdvicetElements}" RowIndicatorVisibility="Collapsed" AutoGenerateColumns="False"
CanUserFreezeColumns="False" BorderThickness="0" CanUserResizeColumns="False"
ShowGroupPanel="False"
Margin="0">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="Nom fichier" DataMemberBinding="{Binding ReceivedFileName}" />
<telerik:GridViewDataColumn Header="Date" DataMemberBinding="{Binding CreationTime, Converter={StaticResource DConverter}}" />
<telerik:GridViewDataColumn Header="Heure" DataMemberBinding="{Binding CreationTime, Converter={StaticResource TConverter}}" IsFilterable="False" IsGroupable="False"/>
<telerik:GridViewDataColumn Header="Montant soumis" DataMemberBinding="{Binding AmountSubmitted}" TextAlignment="Right" DataFormatString = "{}{0:c2}" IsReadOnly="True" />
<telerik:GridViewDataColumn Header="Montant payé" DataMemberBinding="{Binding AmountPaid}" TextAlignment="Right" DataFormatString = "{}{0:c2}" IsReadOnly="True" />
<telerik:GridViewDataColumn Header="Message d'erreur" DataMemberBinding="{Binding ErrorMessage}" Width="250" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</telerik:RadTabItem>
<telerik:RadTabItem Header="Factures reliées " DataContext="{Binding}" Margin="5 0 0 0" Height="24" HorizontalContentAlignment="Stretch" HorizontalAlignment="Left">
<telerik:RadGridView Height="Auto" Width="Auto" x:Name="RadGridViewR" ItemsSource="{Binding RelatedBills}" RowIndicatorVisibility="Collapsed" AutoGenerateColumns="False"
CanUserFreezeColumns="False" BorderThickness="0" CanUserResizeColumns="False"
ShowGroupPanel="False"
Margin="0">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="No" DataMemberBinding="{Binding Number}" IsGroupable="False" IsFilterable="False" />
<telerik:GridViewDataColumn Header="Montant soumis ($)" TextAlignment="Right" DataMemberBinding="{Binding AmountSubmitted}" />
<telerik:GridViewDataColumn Header="Patient" DataMemberBinding="{Binding PatientName}"/>
<telerik:GridViewDataColumn Header="Erreur courante" DataMemberBinding="{Binding ErrorDescription}" Width="250"/>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</telerik:RadTabItem>
</telerik:RadTabControl>
</DataTemplate>
</telerik:RadGridView.RowDetailsTemplate>
</telerik:RadGridView>
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: index
at Telerik.Windows.Controls.GridView.GridViewDataControl.CommitCurrentEdit(GridViewRow gridViewRow)
at Telerik.Windows.Controls.GridView.GridViewDataControl.PerformRowEditEnded(GridViewCell currentCell)
at Telerik.Windows.Controls.GridView.GridViewDataControl.CommitCellEdit(GridViewCell currentCell, Boolean isLeavingRow)
at Telerik.Windows.Controls.GridView.GridViewDataControl.OnItemsChanged(NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Controls.GridView.BaseItemsControl.OnItemCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.DataItemCollection.OnCollectionViewCollectionChanged(NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.QueryableCollectionView.RefreshOverride()
at Telerik.Windows.Data.QueryableCollectionView.RefreshInternal()
at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
(More that was removed, but entry point from our code)
<
telerik:RadGridView
x:Name
=
"GridView"
ItemsSource
=
"{Binding DataView}"
Width
=
"700"
MinHeight
=
"386"
MaxHeight
=
"500"
.........
</telerik:RadGridView>
<
telerik:RadDataPager
PageSize
=
"100"
Grid.Row
=
"1"
Source
=
"{Binding DataView}"
/>
public
VirtualQueryableCollectionView<VSOEChageItemViewModel> DataView
{
get
{
if
(_DataView ==
null
)
{
_DataView =
new
VirtualQueryableCollectionView<VSOEChageItemViewModel>() { LoadSize = 40, VirtualItemCount = 40 };
_DataView.ItemsLoading += DataViewItemsLoading;
}
return
_DataView;
}
private
set
{
if
(_DataView !=
null
)
{
_DataView.ItemsLoading -= DataViewItemsLoading;
}
_DataView = value;
if
(_DataView !=
null
)
{
_DataView.ItemsLoading += DataViewItemsLoading;
}
}
}
private
void
DataViewItemsLoading(
object
sender, VirtualQueryableCollectionViewItemsLoadingEventArgs e)
{
string
filertString = GetFilertString();
var sort = DataView.SortDescriptors;
var sortString = sort.ToDynamicLinq();
if
(!
string
.IsNullOrEmpty(sortString))
sortString = sortString.Remove(0, sortString.IndexOf(
"."
) + 1);
int
allCount = 0;
List<VSOEChageItemViewModel> dd1 = LoadData(filertString, sortString, e.StartIndex, e.ItemCount,
out
allCount);
if
(allCount != DataView.VirtualItemCount)
{
DataView.VirtualItemCount = allCount;
}
DataView.Load(e.StartIndex, dd1);
}
DataProvider.cs
namespace
SampleLinqToSQL
{
public
static
class
DataProvider
{
private
static
NorthwindDataContext dataContext =
null
;
public
static
NorthwindDataContext DataContext
{
get
{
return
dataContext;
}
}
static
DataProvider()
{
dataContext =
new
NorthwindDataContext();
}
public
static
void
SetDataContext(
string
connectionString)
{
dataContext =
null
;
dataContext =
new
NorthwindDataContext(connectionString);
}
}
}
MainWindow.xaml
<
Window
x:Class
=
"SampleLinqToSQL.MainWindow"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
Title
=
"MainWindow"
Height
=
"350"
Width
=
"525"
>
<
DockPanel
LastChildFill
=
"True"
>
<
StackPanel
DockPanel.Dock
=
"Bottom"
HorizontalAlignment
=
"Right"
Orientation
=
"Horizontal"
>
<
Button
x:Name
=
"SaveBtn"
Width
=
"50"
Height
=
"25"
Margin
=
"5"
Click
=
"SaveBtn_Click"
>Save</
Button
>
<
Button
x:Name
=
"CancelBtn"
Width
=
"50"
Height
=
"25"
Margin
=
"5"
Click
=
"CancelBtn_Click"
>Cancel</
Button
>
</
StackPanel
>
<
ListBox
x:Name
=
"TableNames"
DockPanel.Dock
=
"Left"
Width
=
"140"
MouseDoubleClick
=
"TableNames_MouseDoubleClick"
></
ListBox
>
<
Border
>
<
DockPanel
x:Name
=
"DocumentArea"
>
<
telerik:RadGridView
x:Name
=
"dataGridView"
AutoGenerateColumns
=
"True"
ItemsSource
=
"{Binding}"
/>
</
DockPanel
>
</
Border
>
</
DockPanel
>
</
Window
>
MainWindow.xaml.cs
namespace
SampleLinqToSQL
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public
partial
class
MainWindow : Window
{
private
string
sqlConnection = @
"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Path\Northwind.mdf;Integrated Security=True;User Instance=True"
;
public
MainWindow()
{
InitializeComponent();
DataProvider.SetDataContext(sqlConnection);
LoadTableNames();
}
private
void
LoadTableNames()
{
List<
string
> tableNames =
new
List<
string
>();
foreach
(PropertyInfo item
in
DataProvider.DataContext.GetType().GetProperties())
{
tableNames.Add(item.Name);
}
tableNames = tableNames.OrderBy(s => s).ToList();
TableNames.ItemsSource = tableNames;
}
private
void
SaveBtn_Click(
object
sender, RoutedEventArgs e)
{
DataProvider.DataContext.SubmitChanges();
}
private
void
CancelBtn_Click(
object
sender, RoutedEventArgs e)
{
//TODO
}
private
void
TableNames_MouseDoubleClick(
object
sender, MouseButtonEventArgs e)
{
if
(TableNames.SelectedItem !=
null
)
{
dataGridView.DataContext = DataProvider.DataContext.GetTableByName(TableNames.SelectedItem.ToString()).AsParallel();
}
}
}
}