لا يعمل Wpftoolkit DataGrid في Windows Phone 7
-
21-09-2019 - |
سؤال
أحاول استخدام wpftoolkit DataGrid
في مشروع Windows Phone 7 (Silverligt 4) وهو لا يعمل. ها هو xaml:
<UserControl x:Class="SilverlightControls.Grid"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:wtk="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
d:DesignHeight="480" d:DesignWidth="480">
<Grid x:Name="LayoutRoot" Background="#FF1F1F1F" Width="960">
<Grid x:Name="TitleGrid">
<TextBlock Text="{Binding Title}" Style="{StaticResource PhoneTextPageTitle2Style}"/>
</Grid>
<wtk:DataGrid>
</wtk:DataGrid>
</Grid>
</UserControl>
يجمع المشروع جيدًا ولكنه يتعطل في وقت التشغيل في محاولة لتحميل هذا التحكم. أفضل فكرة حصلت عليها حتى الآن هي من Visual Studio Designer. بمجرد أن أضيف wtk:DataGrid
إلى عنصر التحكم ، لا يتم تحميل المصمم المرئي ، وأسفل هو الاستثناء الذي يعرضه.
هل يمكن أن يكون wpftoolkit يعتمد على العرض التقديمي framework.dll وهو غير متوفر في SL4؟
System.Reflection.Adds.UnresolvedAssemblyException Type universe cannot resolve assembly: PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35. at System.Reflection.Adds.AssemblyProxy.GetResolvedAssembly() at System.Reflection.Adds.AssemblyProxy.get_FullName() at Microsoft.Windows.Design.Metadata.ReflectionMetadataContext.PrepareAttributes(Reflectable`1 reflectableAssembly) at Microsoft.Windows.Design.Metadata.ReflectionMetadataContext.PrepareAttributes(Reflectable`1 reflectableType) at MS.Internal.Metadata.ClrType.GetAttributes[T](ReflectionMetadataContext context, IReflectable`1 member, ITypeMetadata attributeType, Boolean merge, AttributeMergeCache& cache) at MS.Internal.Metadata.ClrMember`1.GetLocalAttributes(ITypeMetadata attributeType) at MS.Internal.Design.Metadata.Xaml.XamlType.GetSpecialProperty(Int32 idx, PropertyIdentifier pid) at MS.Internal.Design.Metadata.Xaml.XamlType.get_ContentProperty() at Microsoft.Windows.Design.Metadata.Xaml.XamlExtensionImplementations.GetContentProperty(ITypeMetadata sourceType) at Microsoft.Windows.Design.Metadata.Xaml.XamlExtensions.GetContentProperty(ITypeMetadata source) at MS.Internal.Design.Metadata.ReflectionTypeNode.get_ContentProperty() at MS.Internal.Design.Markup.XmlElement.CalcChildWhitespaceImportant(XamlElement element) at MS.Internal.Design.Markup.XmlElement.ConvertChildrenToXaml(XamlElement result, PrefixScope scope, IParseContext context, IMarkupSourceProvider provider, Boolean childrenAsString) at MS.Internal.Design.Markup.XmlElement.ConvertToXaml(XamlElement parent, PrefixScope parentScope, IParseContext context, IMarkupSourceProvider provider) at MS.Internal.Design.Markup.XmlElement.ConvertChildrenToXaml(XamlElement result, PrefixScope scope, IParseContext context, IMarkupSourceProvider provider, Boolean childrenAsString) at MS.Internal.Design.Markup.XmlElement.ConvertToXaml(XamlElement parent, PrefixScope parentScope, IParseContext context, IMarkupSourceProvider provider) at MS.Internal.Design.DocumentModel.DocumentTrees.Markup.XamlSourceDocument.ParseElementFromSkeleton(XamlParseContext context, SkeletonNode node, XamlElement parent, Boolean fullElement) at MS.Internal.Design.DocumentModel.DocumentTrees.Markup.XamlSourceDocument.UpdateSkeleton(IDamageListener listener) at Microsoft.Windows.Design.DocumentModel.Trees.MarkupDocumentTreeManager.Update() at Microsoft.Windows.Design.DocumentModel.MarkupProducer.Update() at Microsoft.Windows.Design.DocumentModel.MarkupProducer.HandleMessage(DocumentTreeCoordinator sender, MessageKey key, MessageArguments args) at Microsoft.Windows.Design.DocumentModel.MarkupProducer.Microsoft.Windows.Design.DocumentModel.IDocumentTreeConsumer.HandleMessage(DocumentTreeCoordinator sender, MessageKey key, MessageArguments args) at Microsoft.Windows.Design.DocumentModel.DocumentTreeCoordinator.SendMessage[T](MessageKey`1 key, T args, Boolean isPrivateMessage) at Microsoft.Windows.Design.DocumentModel.DocumentTreeCoordinator.QueuedMessage`1.Microsoft.Windows.Design.DocumentModel.IQueuedMessage.Invoke() at Microsoft.Windows.Design.DocumentModel.DocumentTreeCoordinator.ProcessQueuedMessages(Object state) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
المحلول
فقط عندما كنت على وشك نشر السؤال ، أظهر StackOverflow Tags الأكثر تلقائيًا أن هناك مجموعة أدوات Silverlight. من الواضح أن هذا ما يجب أن أستخدمه.
منذ أن بذلت كل هذا الجهد في السؤال ، سأترك السؤال والإجابة كشخصية لذهول stackoverflow في الإرسال التلقائي لسؤالي.
تعديل تحتاج إلى ثنائيات Silverlight 3 Toolkit لاستخدام DataGrid. تحتاج إلى إضافة هذه الإشارات الأربعة إلى المشروع:
- System.componentModel.dataannotations.dll
- System.windows.controls.data.dll
- System.windows.controls.data.input.dll
- System.Windows.data.dll