Перенаправленное событие диспетчера тем Devexpress уже используется при создании экземпляра представления призмы

Я создаю бизнес-приложение на основе крошечной вариации платформы Prism (несколько изменений в поведении, но ничего в областях, которые могли бы повлиять на мою проблему).

Я создал приложение оболочки с окном оболочки, которое было создано с помощью мастера devexpress dxwindow в vs2010. Я создал область внутри панели макета devexpress для своего основного контента. Затем я создал представление, которое также использует элементы управления devexpress, в отдельном проекте, который затем нацелен на этот регион.

Когда приложение запускается и представление регистрируется и, следовательно, «вводится» (в логическом смысле, а не в смысле DI или других концепций программирования) в регион, я получаю одну серьезную ошибку, которая, похоже, связана с темами devexpress, но должна быть тупой, я не знаю, что, черт возьми, это происходит. Я должен отметить, что мои знания WPF быстро растут, но все еще достаточно низки.

Вот подробности...

System.Windows.Markup.XamlParseException occurred
  Message='The invocation of the constructor on type 'DevExpress.Xpf.LayoutControl.LayoutControl' that matches the specified binding constraints threw an exception.' Line number '14' and line position '10'.
  Source=PresentationFramework
  LineNumber=14
  LinePosition=10
  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 MyProject.Wpf.Modules.Partner.PartnerView.InitializeComponent() in c:\Workspace\Projects\MyProject\trunk\src\Wpf\MyProject.Wpf.Modules.Partner\PartnerView.xaml:line 1
       at MyProject.Wpf.Modules.Partner.PartnerView..ctor() in C:\Workspace\Projects\MyProject\trunk\src\Wpf\MyProject.Wpf.Modules.Partner\PartnerView.xaml.cs:line 24
  InnerException: System.Xaml.XamlObjectWriterException
       Message=Set property 'System.Windows.ResourceDictionary.Source' threw an exception.
       Source=System.Xaml
       LineNumber=0
       LinePosition=0
       StackTrace:
            at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(Object inst, XamlMember property, Object value)
            at MS.Internal.Xaml.Runtime.PartialTrustTolerantRuntime.SetValue(Object obj, XamlMember property, Object value)
            at System.Xaml.XamlObjectWriter.SetValue(Object inst, XamlMember property, Object value)
            at System.Xaml.XamlObjectWriter.Logic_ApplyPropertyValue(ObjectWriterContext ctx, XamlMember prop, Object value, Boolean onParent)
            at System.Xaml.XamlObjectWriter.Logic_DoAssignmentToParentProperty(ObjectWriterContext ctx)
            at System.Xaml.XamlObjectWriter.Logic_AssignProvidedValue(ObjectWriterContext ctx)
            at System.Xaml.XamlObjectWriter.WriteEndMember()
            at System.Xaml.XamlWriter.WriteNode(XamlReader reader)
            at System.Xaml.XamlServices.Transform(XamlReader xamlReader, XamlWriter xamlWriter, Boolean closeWriter)
            at System.Xaml.XamlServices.Transform(XamlReader xamlReader, XamlWriter xamlWriter)
            at System.Windows.SystemResources.ResourceDictionaries.LoadDictionary(Assembly assembly, String assemblyName, String resourceName, Boolean isTraceEnabled)
            at System.Windows.SystemResources.ResourceDictionaries.LoadGenericDictionary(Boolean isTraceEnabled)
            at System.Windows.SystemResources.FindDictionaryResource(Object key, Type typeKey, ResourceKey resourceKey, Boolean isTraceEnabled, Boolean allowDeferredResourceReference, Boolean mustReturnDeferredResourceReference, Boolean& canCache)
            at System.Windows.SystemResources.FindResourceInternal(Object key, Boolean allowDeferredResourceReference, Boolean mustReturnDeferredResourceReference)
            at System.Windows.StyleHelper.GetThemeStyle(FrameworkElement fe, FrameworkContentElement fce)
            at System.Windows.FrameworkElement.UpdateThemeStyleProperty()
            at System.Windows.FrameworkElement.OnThemeStyleKeyChanged(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.FrameworkElement.set_DefaultStyleKey(Object value)
            at DevExpress.Xpf.Core.CornerBox..ctor()
            at DevExpress.Xpf.Core.PanelControllerBase.CreateScrollBars()
            at DevExpress.Xpf.Core.PanelControllerBase.CheckScrollBars()
            at DevExpress.Xpf.Core.Controller.set_ScrollBars(ScrollBars value)
            at DevExpress.Xpf.Core.ScrollControlController..ctor(IScrollControl control)
            at DevExpress.Xpf.LayoutControl.LayoutControllerBase..ctor(ILayoutControlBase control)
            at DevExpress.Xpf.LayoutControl.LayoutGroupController..ctor(ILayoutGroup control)
            at DevExpress.Xpf.LayoutControl.LayoutControlController..ctor(ILayoutControl control)
            at DevExpress.Xpf.LayoutControl.LayoutControl.CreateController()
            at DevExpress.Xpf.Core.PanelBase..ctor()
            at DevExpress.Xpf.Core.ScrollControl..ctor()
            at DevExpress.Xpf.LayoutControl.LayoutControlBase..ctor()
            at DevExpress.Xpf.LayoutControl.LayoutGroup..ctor()
            at DevExpress.Xpf.LayoutControl.LayoutControl..ctor()
            at System.Xaml.Schema.XamlTypeInvoker.DefaultCtorXamlActivator.InvokeDelegate(Action`1 action, Object argument)
            at System.Xaml.Schema.XamlTypeInvoker.DefaultCtorXamlActivator.CallCtorDelegate(XamlTypeInvoker type)
            at System.Xaml.Schema.XamlTypeInvoker.DefaultCtorXamlActivator.CreateInstance(XamlTypeInvoker type)
            at System.Xaml.Schema.XamlTypeInvoker.CreateInstance(Object[] arguments)
            at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstanceWithCtor(XamlType xamlType, Object[] args)
            at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstance(XamlType xamlType, Object[] args)
       InnerException: System.Windows.Markup.XamlParseException
            Message=Set property 'System.Windows.ResourceDictionary.DeferrableContent' threw an exception.
            Source=PresentationFramework
            LineNumber=0
            LinePosition=0
            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.LoadBamlStreamWithSyncInfo(Stream stream, ParserContext pc)
                 at MS.Internal.AppModel.AppModelKnownContentFactory.BamlConverter(Stream stream, Uri baseUri, Boolean canUseTopLevelBrowser, Boolean sandboxExternalContent, Boolean allowAsync, Boolean isJournalNavigation, XamlReader& asyncObjectConverter)
                 at MS.Internal.AppModel.MimeObjectFactory.GetObjectAndCloseStream(Stream s, ContentType contentType, Uri baseUri, Boolean canUseTopLevelBrowser, Boolean sandboxExternalContent, Boolean allowAsync, Boolean isJournalNavigation, XamlReader& asyncObjectConverter)
                 at System.Windows.ResourceDictionary.set_Source(Uri value)
                 at System.Windows.Baml2006.WpfSharedBamlSchemaContext.<Create_BamlProperty_ResourceDictionary_Source>b__1c4(Object target, 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.TypeInitializationException
                 Message=The type initializer for 'DevExpress.Xpf.Core.ThemeManager' threw an exception.
                 Source=DevExpress.Xpf.Core.v10.2
                 TypeName=DevExpress.Xpf.Core.ThemeManager
                 StackTrace:
                      at DevExpress.Xpf.Core.ThemeManager.get_TraceSwitch()
                      at DevExpress.Xpf.Utils.Themes.DefaultStyleThemeKeyExtension.RegisterThemeType()
                      at DevExpress.Xpf.Utils.Themes.DefaultStyleThemeKeyExtension.ProvideValue(IServiceProvider serviceProvider)
                      at System.Windows.ResourceDictionary.EvaluateMarkupExtensionNodeList(XamlReader reader, IServiceProvider serviceProvider)
                      at System.Windows.ResourceDictionary.GetKeyValue(KeyRecord key, IServiceProvider serviceProvider)
                      at System.Windows.ResourceDictionary.SetKeys(IList`1 keyCollection, IServiceProvider serviceProvider)
                      at System.Windows.ResourceDictionary.SetDeferrableContent(DeferrableContent deferrableContent)
                      at System.Windows.Baml2006.WpfSharedBamlSchemaContext.<Create_BamlProperty_ResourceDictionary_DeferrableContent>b__168(Object target, 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.ArgumentException
                      Message=RoutedEvent Name 'ThemeChanged' for OwnerType 'System.Windows.DependencyObject' already used.
                      Source=PresentationCore
                      StackTrace:
                           at System.Windows.EventManager.RegisterRoutedEvent(String name, RoutingStrategy routingStrategy, Type handlerType, Type ownerType)
                           at DevExpress.Xpf.Core.ThemeManager..cctor()
                      InnerException:

Представление работает в статическом приложении, то есть не использует регионы и не использует другие элементы управления devexpress вне представления.

Большое спасибо.


person Adam    schedule 05.01.2012    source источник


Ответы (1)


У меня была такая же ошибка некоторое время назад. Я обнаружил, что у меня было несколько версий элементов управления на моем ПК, и они смешивали версии элементов управления DevExpress (для меня это были 11.1 и 11.2).

если вы используете шаблон DevExpress, возможно, стоит проверить, какую версию элементов управления он добавляет в качестве ссылок. если вы используете более новую версию элементов управления, это может привести к несоответствию версий.

person Faster Solutions    schedule 29.03.2012