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"); }}#endregionnamespace 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>