मेरे पास एक डब्ल्यूपीएफ एप्लीकेशन में डेटाग्रिड है जो ऑब्जेक्ट्स के ऑब्जेर्जेबल कोलेक्शन में बांधता है, और सब कुछ ठीक काम करता है। अब अगर मैं रनटाइम के दौरान डेटाग्रिड में एक सेल संशोधित करता हूं, और सामग्री को हटा देता हूं, तो सेल को खाली छोड़ दें। देखने योग्य चयन का संबंधित मान संशोधित नहीं किया जाएगा, यह पुराना मान होगा। लेकिन जब मैं datagrid युक्त विंडो से बाहर निकलने और खिड़की को पुनः आरंभ, यह एक XamlParseException फेंकता है, का कहना है:डब्ल्यूपीएफ डाटाग्रिड आइटमसोर्स बाइंडिंग इश्यू
StackTrace:
at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at VO3.Start.InitializeComponent() in c:\VO\Trunk\VO3\Start.xaml:line 1
at VO3.Start..ctor() in C:\VO\Trunk\VO3\Start.xaml.cs:line 103
InnerException: System.InvalidOperationException
Message='DeferRefresh' is not allowed during an AddNew or EditItem transaction.
Source=PresentationFramework
StackTrace:
at System.Windows.Data.CollectionView.DeferRefresh()
at System.Windows.Controls.ItemCollection.SetCollectionView(CollectionView view)
at System.Windows.Controls.ItemCollection.SetItemsSource(IEnumerable value)
at System.Windows.Controls.ItemsControl.OnItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
at System.Windows.Baml2006.WpfKnownMemberInvoker.SetValue(Object instance, Object value)
at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(XamlMember member, Object obj, Object value)
at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(Object inst, XamlMember property, Object value)
InnerException:
"संपत्ति 'System.Windows.Controls.ItemsControl.ItemsSource' सेट एक अपवाद फेंक दिया" यह नहीं होगा जब तक मैंने खिड़की बंद कर दी, तब तक अपवाद फेंक दें, डाटाग्रिड में कोई भी सेल खाली नहीं है। विंडो प्रारंभ करने के पहले मैंने संग्रह को भी चेक किया है कॉम्पोनेंट लाइन और यह बिल्कुल ठीक दिखता है, सभी ऑब्जेक्ट्स का सही मान होता है, खाली या शून्य नहीं होता है। मैं यह नहीं समझ सकता कि यह इस अपवाद को क्यों फेंक रहा है। कोई विचार? अग्रिम धन्यवाद।
XAML:
<DataGrid HeadersVisibility="All" RowHeight="19" AutoGenerateColumns="False" Grid.Row="1" CanUserResizeColumns="False"
CanUserAddRows="False" CanUserDeleteRows="False" Block.TextAlignment="Right" Grid.RowSpan="2" CanUserReorderColumns="False"
ItemsSource="{Binding Collection}" Width="132" HorizontalAlignment="Right" Margin="10,0,10,0" CanUserSortColumns="False"
IsEnabled="{Binding ElementName=CheckBox, Path=SelectedIndex, Converter={StaticResource startEnabledConverter}}">
संग्रह में आइटमों पर संपत्तियों को कम करने योग्य हैं? आपकी प्रॉपर्टी अपडेट कब की जाती है (उदा। प्रॉपर्टी चेंज, लॉसफोकस, आदि)। – CodeWarrior
संग्रह में ऑब्जेक्ट के गुण शून्य नहीं हैं, वे प्रॉपर्टीchanged पर अपडेट किए गए हैं। लेकिन पिछले अनुभव से, जब क्षेत्र खाली छोड़ दिया जाता है इसका मतलब यह नहीं है कि संग्रह में संबंधित वस्तु शून्य है। और मैंने चेक किया है कि मान को खाली छोड़ दिया गया है कि संग्रह में ऑब्जेक्ट अभी भी पुराना मान है।खिड़की फिर से खुलने से पहले मैंने फिर से मूल्यों की जांच की और कोई खाली संपत्ति नहीं है। कुछ कारणों से डब्ल्यूपीएफ एक अपवाद फेंकता है जब यह डेटाग्रिड –
की आइटम्ससोर्स निर्भरता प्रॉपर्टी की सेट प्रॉपर्टी पर जाता है, तो मेरा सुझाव है कि आप अपने यूआई के किसी भी अन्य भाग की तलाश करें जो एक ही पर्यवेक्षण चयन से जुड़ा हुआ है और परीक्षण के लिए उस संग्रह में सभी बाध्यकारी को हटा देता है आप फिर से अलगाव में समस्या से ऊपर है। यदि आप भाग्यशाली हैं, तो यह केवल अन्य मुद्दों द्वारा उपयोग किए जाने वाले correponding संग्रह दृश्य के साथ एक मुद्दा है। –