سؤال

أحاول استخدام 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. تحتاج إلى إضافة هذه الإشارات الأربعة إلى المشروع:

  1. System.componentModel.dataannotations.dll
  2. System.windows.controls.data.dll
  3. System.windows.controls.data.input.dll
  4. System.Windows.data.dll
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top