Hy,
When moving our application window or resizing it then we get an ArgumentNullException in the DataItemAutomationPeer class.
We are currently on the binaries RadControls for WPF Q1 2011.
I looked at the currently available source code "01348RadControls_for_WPF_40_2011_1_0613_DEV_hotfix".
Callstack on Exception:
Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.Automation.DataItemAutomationPeer.DataItemAutomationPeer(object dataItem, Telerik.Windows.Controls.GridView.Automation.GridViewDataControlAutomationPeer dataControlAutomationPeer) Line 78 C#
> Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.Automation.GridViewDataItemAutomationPeer.GridViewDataItemAutomationPeer(object dataItem, Telerik.Windows.Controls.GridView.Automation.GridViewDataControlAutomationPeer dataControlAutomationPeer) Line 25 C#
Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.Automation.RadGridViewAutomationPeer.CreateDataItemAutomationPeer(object dataItem) Line 97 + 0x2f bytes C#
Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.Automation.GridViewDataControlAutomationPeer.GeneratePeersForDataItems(System.Collections.Generic.List<System.Windows.Automation.Peers.AutomationPeer> newPeerList, Telerik.Windows.Controls.GridView.Automation.AutomationPeerStorage<object,Telerik.Windows.Controls.GridView.Automation.DataItemAutomationPeer> oldCachedPeers) Line 111 + 0x1c bytes C#
Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.Automation.GridViewDataControlAutomationPeer.GetItemPeers() Line 101 C#
Telerik.Windows.Controls.GridView.dll!Telerik.Windows.Controls.GridView.Automation.GridViewVirtualizingPanelAutomationPeer.GetChildrenCore() Line 79 + 0x21 bytes C#
What I saw in the source is:
In class GridViewDataControlAutomationPeer a check is done for (dataitem == null), see below:
private void GeneratePeersForDataItems(List<AutomationPeer> newPeerList, AutomationPeerStorage<object, DataItemAutomationPeer> oldCachedPeers)
{
foreach (object dataItem in this.Items)
{
DataItemAutomationPeer dataItemPeer = oldCachedPeers.FindPeer(dataItem);
if (dataItemPeer == null)
dataItemPeer = this.CreateDataItemAutomationPeer(dataItem);
SetUpOwnerRowEventsSource(dataItemPeer);
this.cachedPeers[dataItem] = dataItemPeer;
newPeerList.Add(dataItemPeer);
}
}
Then later in the ctor of DataItemAutomationPeer I saw the following code:
protected DataItemAutomationPeer(object dataItem, GridViewDataControlAutomationPeer dataControlAutomationPeer)
: base(dataControlAutomationPeer.OwnerGridViewDataControl)
{
if (dataItem == null)
throw new ArgumentNullException("dataItem");
if (dataControlAutomationPeer == null)
throw new ArgumentNullException("dataControlAutomationPeer");
this.dataItem = dataItem;
this.dataControlAutomationPeer = dataControlAutomationPeer;
}
In my case I get the exception from this check in the ctor.
Kind regards,
Yvonne
namespace
KfzOrtung6DataClasses.Modells
{
public
class
Fahrzeuge
{
public
Fahrzeuge()
{
this
.FahrzeugPositionen =
new
ObservableCollection<Positionen>();
}
[Required]
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public
Guid ID {
get
;
set
; }
[Required]
[MaxLength(50)]
public
string
Name {
get
;
set
; }
[Required]
[MaxLength(50)]
public
string
Kennzeichen {
get
;
set
; }
public
string
Rufnummer {
get
;
set
; }
public
int
Aktiv {
get
;
set
; }
public
DateTime Ablaufsimkarte {
get
;
set
; }
[MaxLength(4000)]
public
string
Bemerkung {
get
;
set
; }
public
virtual
ObservableCollection<Positionen> FahrzeugPositionen {
get
;
private
set
; }
}
}
this
.DataContext =
this
.ItemsSource;
ICollectionView _itemsSource;
public
ICollectionView ItemsSource
{
get
{
if
(_itemsSource ==
null
)
{
using
(var ktt =
new
KfzContext6())
{
ktt.MFahrzeuge.Load();
var c = ktt.MFahrzeuge.Local.ToBindingList();
var collectionViewSource =
new
CollectionViewSource {Source = c};
_itemsSource = collectionViewSource.View;
}
}
return
_itemsSource;
}
set
{
_itemsSource = value;
OnPropertyChanged(
"ItemsSource"
);
}
}
#endregion
namespace
KfzOrtung6DataClasses.Modells
{
public
class
KfzContext6 : DbContext
{
public
KfzContext6():
base
(
"KfzContext6"
)
{
}
public
DbSet<Fahrzeuge> MFahrzeuge {
get
;
set
; }
public
DbSet<Positionen> MPositionen {
get
;
set
; }
public
DbSet<Tarife> MTarife {
get
;
set
; }
public
DbSet<Benutzer> MBenutzer {
get
;
set
; }
public
DbSet<SmsProtokoll> MSmsProtokoll {
get
;
set
; }
protected
override
void
OnModelCreating(DbModelBuilder modelBuilder)
{
base
.OnModelCreating(modelBuilder);
// Hier können manuelle Änderungen an Datenbank vorgenommen werden!!
//Beispiel:
//modelBuilder.Entity<Benutzer>().Property(r => r.ID).HasColumnName("Id");
}
}
}
selectedFahrzeugAusListe.Aktiv = chkFahrzeugAktiv.IsChecked ==
true
? 1 : 0;
selectedFahrzeugAusListe.Rufnummer = txFahrzeugGpsnummer.Text.Trim();
selectedFahrzeugAusListe.Kennzeichen = txFahrzeugKennzeichen.Text.Trim();
selectedFahrzeugAusListe.Bemerkung = txFahrzeugKommentar.Text.Trim();
selectedFahrzeugAusListe.Name = txFahrzeugName.Text.Trim();
selectedFahrzeugAusListe.Ablaufsimkarte = dateTimePicker.DisplayDate;
using
(var ktt =
new
KfzContext6())
{
ktt.MFahrzeuge.Add(selectedFahrzeugAusListe);
ktt.SaveChanges();
ItemsSource.Refresh();
}
<
telerik:RadGridView
AutoGenerateColumns
=
"False"
CanUserFreezeColumns
=
"False"
CanUserResizeColumns
=
"True"
Margin
=
"10,6,10,13"
x:Name
=
"FahrzeugGrid"
RowIndicatorVisibility
=
"Visible"
AutoExpandGroups
=
"True"
IsFilteringAllowed
=
"False"
ShowGroupPanel
=
"False"
ShowGroupFooters
=
"False"
IsReadOnly
=
"True"
SelectionChanged
=
"FahrzeugGrid_SelectionChanged"
ActionOnLostFocus
=
"None"
AreRowDetailsFrozen
=
"True"
CanUserInsertRows
=
"False"
CanUserDeleteRows
=
"False"
RowDetailsVisibilityMode
=
"Visible"
Grid.Row
=
"1"
ItemsSource
=
"{Binding ItemsSource, ElementName=DataSourceChangeNotificationsFahrzeugControl}"
DataLoaded
=
"FahrzeugGrid_DataLoaded"
>
<
telerik:RadGridView.ParentRow
>
<
telerik:GridViewRow
IsTabStop
=
"False"
/>
</
telerik:RadGridView.ParentRow
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Name}"
Header
=
"Fahrzeugname"
Width
=
"200"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Kennzeichen}"
Header
=
"Kennzeichen"
Width
=
"140"
/>
<
telerik:GridViewColumn
Header
=
"Aktiv"
Width
=
"40"
IsFilterable
=
"True"
>
<
telerik:GridViewColumn.CellTemplate
>
<
DataTemplate
>
<
CheckBox
IsEnabled
=
"False"
IsChecked
=
"{Binding Path=Aktiv, Converter={StaticResource CopnvertIntToBool1} }"
>
</
CheckBox
>
</
DataTemplate
>
</
telerik:GridViewColumn.CellTemplate
>
</
telerik:GridViewColumn
>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Rufnummer}"
Header
=
"GPS Nummer"
Width
=
"150"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Ablaufsimkarte}"
Header
=
"Ablauf Karte"
Width
=
"90"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Bemerkung}"
Header
=
"Kommentar"
Width
=
"*"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
On the QuarticEase below, I am getting an "Invalid Type" Error.
Any Easing function I try to enter gives me the same Invalid Type error. Help please!
Visual Studio 2010 w/ .Net 4 with RadControls for WPF 2011_1_0419.
<
Grid
x:Name
=
"MainGrid"
Background
=
"{StaticResource HelpBrush}"
>
<
telerik:RadTransitionControl
x:Name
=
"TransControl"
Width
=
"484"
Height
=
"384"
Duration
=
"0:0:1"
Padding
=
"32"
>
<
telerik:RadTransitionControl.Transition
>
<
telerik:PerspectiveRotationTransition
Direction
=
"Left"
>
</
telerik:PerspectiveRotationTransition
>
</
telerik:RadTransitionControl.Transition
>
<
telerik:RadTransitionControl.Easing
>
<
QuarticEase
EasingMode
=
"EaseOut"
/>
</
telerik:RadTransitionControl.Easing
>
</
telerik:RadTransitionControl
>
</
Grid
>