11

Bu, garip bir durumdur ve bu noktada, makinelerimin yapılandırmasıyla ilgili bir şey olabileceğini düşünüyorum.INotifyDataErrorInfo ArgumentOutOfRangeException, hataları yükseltirChanged event

Temel olarak INotifyDataErrorInfo oldukça standart bir uygulama oluşturdum ve bazı durumlarda, ErrorsChanged olayını yükselterek bir ArgumentOutOfRangeException aldım. Bu istisna fazla bilgi içermiyor; ArgumentOutOfRangeException crossed a native/managed boundary artı negatif olmayan dizinler ve koleksiyon boyutları ile ilgili standart ArgumentOutOfRangeException açıklamasını verir. InnerException boş. Yığın izleme aşağıdaki gibidir:

at System.ThrowHelper 
     .ThrowArgumentOutOfRangeException(ExceptionArgument argument, 
              ExceptionResource resource) 
at System.ThrowHelper.ThrowArgumentOutOfRangeException() 
at System.Collections.Generic.List`1.get_Item(Int32 index) 
at System.Collections.ObjectModel.Collection`1.get_Item(Int32 index) 
at System.Collections.ObjectModel.ReadOnlyCollection`1.get_Item(Int32 index) 

nedeni ben (yani benim kod bloglarına yayınlanan çözümlerin bir çift çalıştı (örneğin here ve here) ve aynı sorunu olsun çünkü benim makine yapılandırması olduğunu belirtmek, INotifyDataErrorInfo başka bir uygulama) ve herhangi bir başkasının yorumunda söz ettiğim sorun yoktur. Googling, yardım etmeyen birkaç rastgele isabet açıyor.

  1. bir doğrulama hatası tetiklenir şekilde kontrol etmek için bir değer girdi aşağıdaki gibidir: gerekli

    durumudur. (Bu iyi çalışıyor, hata metni UI'de beklendiği gibi görüntülenir).

  2. Denetime yeni bir değer girerek onaylamanın başarılı olacağı ve hataların hata koleksiyonundan kaldırılacağı şekilde girdim (HasErrors false değerini döndürür).
  3. HatalarChanged, bu değişikliği hata olmadan başarılı bir şekilde doğrulamaya yansıtmak için yükseltiliyor ve istisna meydana geliyor.

GÜNCELLEME: Ben bir doğrulama hatası gösteren bir TextBox uzak odak taşırsanız ben de üretebilir.

Hizmet paketini/güncelleştirmeyi veya bir şeyi özlediğimi merak ediyorum, çünkü gördüğüm kadarıyla, çerçeve kodunda oldukça basit bir hata var gibi görünüyor ve aynı anda gerçekleşmiyor. başkaları için.

UPDATE: Silverlight 4'ün son RTM yapısını kullanıyorum. RC veya Beta DEĞİL.

GÜNCELLEME: Ben this whitepaper ile sağlanan resmi MS örneği ile aynı sonucu almak.

UPDATE: Şimdi kodumu ve belirtilen örnekleri başka bir makinede test ettim ve iyi çalışıyor. Bunu hala normal makinem üzerinde çalışmadığı (ki şu ana kadar hiç sorun yaşamadım) biraz rahatsız edici olarak çözmek isterim. Buna neden olan şeyin nasıl izleyeceğine dair herhangi bir öneri takdir edilecektir. Sorunlu makineye Silverlight (Runtime, SDK, Toolkit) yükledim ve bu sorunu çözmedi.GÜNCELLEME

: Burada istisna MS sembol sunucusu ile kaynak sunucu desteği sağlayarak elde oluştuğunu çerçeve kod çağrı yığını:

mscorlib.dll!System.ThrowHelper.ThrowArgumentOutOfRangeException(System.ExceptionArgument argument, System.ExceptionResource resource) + 0x40 bytes 
    mscorlib.dll!System.ThrowHelper.ThrowArgumentOutOfRangeException() + 0x10 bytes 
    mscorlib.dll!System.Collections.Generic.List<System.Windows.Controls.ValidationError>.this[int].get(int index = 0) + 0x13 bytes 
    mscorlib.dll!System.Collections.ObjectModel.Collection<System.Windows.Controls.ValidationError>.this[int].get(int index) + 0x2e bytes 
    mscorlib.dll!System.Collections.ObjectModel.ReadOnlyCollection<System.Windows.Controls.ValidationError>.this[int].get(int index) + 0x2e bytes 
    [Native to Managed Transition] 
    [Managed to Native Transition] 
    System.Windows.dll!System.Windows.IndexerListener.Value.get() + 0xc3 bytes 
    System.Windows.dll!System.Windows.IndexerPathStep.Value.get() + 0x17 bytes 
    System.Windows.dll!System.Windows.PropertyPathListener.RaisePropertyPathStepChanged(System.Windows.PropertyPathStep source = {System.Windows.IndexerPathStep}) + 0x17 bytes 
    System.Windows.dll!System.Windows.IndexerPathStep.RaisePropertyPathStepChanged(System.Windows.PropertyListener source) + 0xe bytes 
    System.Windows.dll!System.Windows.IndexerListener.SourcePropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs args) + 0xea bytes 
    System.Windows.dll!System.Windows.Data.WeakPropertyChangedListener.PropertyChangedCallback(object sender, System.ComponentModel.PropertyChangedEventArgs args) + 0x3d bytes 
    System.Windows.dll!System.Collections.ObjectModel.ReadOnlyObservableCollection<System.__Canon>.OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs args) + 0x17 bytes 
    System.Windows.dll!System.Collections.ObjectModel.ReadOnlyObservableCollection<System.__Canon>.HandlePropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) + 0xe bytes 
    System.Windows.dll!System.Collections.ObjectModel.ObservableCollection<System.Windows.Controls.ValidationError>.OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs e) + 0x37 bytes 
    System.Windows.dll!System.Collections.ObjectModel.ObservableCollection<System.Windows.Controls.ValidationError>.RemoveItem(int index = 0) + 0x79 bytes 
    mscorlib.dll!System.Collections.ObjectModel.Collection<System.Windows.Controls.ValidationError>.Remove(System.Windows.Controls.ValidationError item) + 0x75 bytes 
    System.Windows.dll!System.Windows.Controls.Validation.RemoveValidationError(System.Windows.FrameworkElement fe = {System.Windows.Controls.TextBox}, System.Windows.Controls.ValidationError error) + 0x40 bytes 
    System.Windows.dll!System.Windows.Data.BindingExpression.RemoveErrorFromTarget(System.Windows.Controls.ValidationError error) + 0x48 bytes 
    System.Windows.dll!System.Windows.Data.BindingExpression.NotifyOldDataErrorInfos(System.Collections.ObjectModel.Collection<System.Windows.Controls.ValidationError> validationErrors) + 0x73 bytes 
    System.Windows.dll!System.Windows.Data.BindingExpression.NotifyOldDataErrorInfos(bool isNotifyChildDataErrorInfo) + 0x25 bytes 
    System.Windows.dll!System.Windows.Data.BindingExpression.NotifyDataErrorInfo_ErrorsChanged(object sender, System.ComponentModel.DataErrorsChangedEventArgs e) + 0xad bytes 

GÜNCELLEME: uygulama iyi çalışır (on Bir hata ayıklayıcı ekli olarak, sorun makine, beklendiği gibi çalışır ve işlenmemiş özel durum komut dosyaları çalıştırılır (Bu tür beni güldü, VS ilgili olabilir?). Şanssız bir şekilde ışık tutabilecek herhangi bir Silverlight eklenti günlük dosyası bulabildiğimi görmek için google'da hızlı bir arama yaptım, böyle bir günlük var mı?

+0

VS2012 üzerinde SL5 ile aynı hatayı yaşıyorum –

+0

Hiç bir yanıt buldunuz mu? Silverlight olmadan benzer sorunlar yaşıyorum http://stackoverflow.com/questions/15824070/datepicker-value-set-error-binding-to-datasource –

+0

@kirsten Hayır üzgünüm, bir çözüm bulamadık. Bu kutuya yalnızca bir hata ayıklayıcı eklenmiş olarak yeniden basılabilirdi, böylece ne olduğunu asla bulamadı. –

cevap

0

Bu sorunu, Silverlight uygulama bağlantılarını web projesinden kaldırarak ve yeniden ekleyerek giderebildim.

Bu yardımcı olur umarım.

+1

maalesef bu yardımcı olmadı, teşekkürler. –

+0

Bunu duyduğuma üzüldüm. Garip olan şey, değişiklikleri kontrol etmem, bunun yerine web projesinde beklemedeki değişiklikleri geri alıp orijinal dosyaları ile yeniden oluşturmayı denediğimi deneyimlemem, benim için sürprizim olmadı. Ayrıca, web projesindeki Hata Ayıklama seçeneğinin işaretini kaldırın (daha sonra tekrar kontrol ettik) ve çözüm sürecindeki projelerin DEA bağlantıları ile aynı şekilde kontrol ediyorum. Her defasında tüm çözümün bir Rebuildini yaptım. Bu hatayı sadece yeni yüklemelerle birlikte makinelerde bulduğum için çok tuhaf. – Chooksii

3

Ben

{Binding (Validation.Errors)[0].ErrorContent} 

Validation.Errors boş hale ama yine referanslarını yaptığını henüz bağlayıcı o TextBox şablon araç ipucu hatayı bağlayıcıdır düşünüyorum.

Özel durumu dikkate almamanızı öneririz. Hata ayıklama ayarlarında "İstisnalar AppDomain'i geçtiğinde veya yönetilen ...." komutunun işaretini kaldırın.

+0

Bilgisayarımda denedim ve çekicilik gibi çalışıyor. Diğer durumların başka türdeki istisnalara yol açıp açmayacağı konusunda biraz şüpheliydim, fakat diğer 3 VS 2010 kurulumunu iş arkadaşlarıma da kontrol ettim ve bunların hepsi varsayılan olarak bu seçeneği işaretlememişti. Bu yüzden bu problemi çözmenin doğru yolu olduğunu düşünüyorum. – Entrodus

+0

Denedim ve işe yaramadı. – Shimmy

0

Bu durumda yerel koddan atılan iki farklı istisna vardır. Ne yakaladığınıza (ya da koymadığınıza) bakmayın, bir yakalama bloğu tarafından yakalanır.

Bir "ArgumentOutOfRangeException yerel/yönetilen bir sınırı aştı". Bunu görmeyi bırakmak için, "İstisnalar, AppDomain veya yönetilen/yerel sınırlar (Yalnızca yönetilen) ile çakışma olduğunda" Araçlar> Seçenekler> Hata Ayıklama> Genel'de işaretini kaldırmanız gerekir.

Diğeri sadece "ArgumentOutOfRangeException" dir. Bunu görmeyi bırakmak için, Araçlar> Seçenekler> Hata ayıklama> Genel'de "Sadece Kodumu Etkinleştir" seçeneğini işaretlemeniz gerekir.