Unable to open window due to corrupt object

I was modifying a window and added a Multistate Indicator. I modified the Styles dataset table and removed all of the default columns except 'state' and 'text' (animationindex, animation Duration, backgorund, border, foreground). I started receiveing the following error popup every time I attempted to modify this object. I tried deleting the object and received the same error. I closed the window and saved the project. Now when I attempt to open the window, I get this error and the window does not open. I am no longer able to modify this window because it will not open. Exporting the window and importing it does not clear the error. Any ideas for a workaround? Thanks.

Following is the error:

com.inductiveautomation.ignition.common.xmlserialization.SerializationException: Error invoking [PMIMultiStateIndicator]Multi-State Indicator.setStyles(Dataset [2R ⅹ 2C])
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.handlers.ObjectDeserializationHandler.endSubElement(ObjectDeserializationHandler.java:81)
at com.inductiveautomation.factorypmi.application.xmlserialization.ComponentDeserializationHandler.endSubElement(ComponentDeserializationHandler.java:93)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.XMLDeserializer$ParseContext.onElementEnd(XMLDeserializer.java:663)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:165)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.parse(BinaryParser.java:51)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.XMLDeserializer.deserializeBinary(XMLDeserializer.java:313)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.XMLDeserializer.deserialize(XMLDeserializer.java:233)
at com.inductiveautomation.factorypmi.application.model.WindowCache._deserializeWindow(WindowCache.java:277)
at com.inductiveautomation.factorypmi.application.model.WindowCache._loadWindow(WindowCache.java:216)
at com.inductiveautomation.factorypmi.application.model.WindowCache.openWindow(WindowCache.java:435)
at com.inductiveautomation.factorypmi.designer.workspace.WindowWorkspace$DesigntimeWindowOpener.openWindow(WindowWorkspace.java:3325)
at com.inductiveautomation.factorypmi.designer.workspace.WindowWorkspace.openWindow(WindowWorkspace.java:1078)
at com.inductiveautomation.factorypmi.designer.workspace.StartupPanel$ResourceThumbnail.onClick(StartupPanel.java:335)
at com.inductiveautomation.factorypmi.designer.workspace.StartupPanel$ThumbnailButton$1.mouseClicked(StartupPanel.java:242)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.inductiveautomation.ignition.common.xmlserialization.deserialization.handlers.ObjectDeserializationHandler.endSubElement(ObjectDeserializationHandler.java:68)
... 56 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at com.inductiveautomation.ignition.common.BasicDataset.getValueAt(BasicDataset.java:114)
at com.inductiveautomation.factorypmi.application.binding.StyleListener.register(StyleListener.java:218)
at com.inductiveautomation.factorypmi.application.binding.StyleListener.propertyChange(StyleListener.java:105)
at java.beans.PropertyChangeSupport.fire(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.awt.Component.firePropertyChange(Unknown Source)
at com.inductiveautomation.factorypmi.application.components.PMILabel.setStyles(PMILabel.java:345)
... 61 more

Ignition v7.6.4 (b2013112117)
Java: Oracle Corporation 1.7.0_51

You can try pasting the window into a text file (it’s just xml), deleting the damaged component’s xml node and then pasting / re-importing the window back into the project. If you are not sure how to do that, you can attach the window export here.

I have the same issue with being unable to open a window because of a corrupt object. However in 2024 the window file doesn't seem to be an xml.
Is there another way of deleting corrupt objects from a window?

In the designer, with the window closed, use shift-right-click to gain access to the XML operations.

That still gives me a error message:
image

You have to edit the XML to get rid of the invalid object. Then paste it back with the window still closed.

Just copying and pasting the XML is not expected to fix anything.

I had to shift-right-click on the window in the project browser to get to the XML. I first tried to do shift-right-click on the window under "Vision Windows & Templates", which just tries to open the window.