我试图在Windows Phone 7项目(Silverligt 4)中使用WpfToolkit DataGrid,但无法正常工作。这是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依赖PresentationFramework.dll而在SL4中不可用?

System.Reflection.Adds.UnresolvedAssemblyException
类型Universe无法解析程序集:PresentationFramework,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35。
在System.Reflection.Adds.AssemblyProxy.GetResolvedAssembly()
在System.Reflection.Adds.AssemblyProxy.get_FullName()
在Microsoft.Windows.Design.Metadata.ReflectionMetadataContext.PrepareAttributes(Reflectable`1 ReflectionableAssembly)
在Microsoft.Windows.Design.Metadata.ReflectionMetadataContext.PrepareAttributes(Reflectable`1 ReflectionableType)
在MS.Internal.Metadata.ClrType.GetAttributes [T](ReflectionMetadataContext上下文,IReflectable`1成员,ITypeMetadata attributeType,布尔合并,AttributeMergeCache和缓存)
在MS.Internal.Metadata.ClrMember`1.GetLocalAttributes(ITypeMetadata attributeType)
在MS.Internal.Design.Metadata.Xaml.XamlType.GetSpecialProperty(Int32 idx,PropertyIdentifier pid)
在MS.Internal.Design.Metadata.Xaml.XamlType.get_ContentProperty()
在Microsoft.Windows.Design.Metadata.Xaml.XamlExtensionImplementations.GetContentProperty(ITypeMetadata sourceType)
在Microsoft.Windows.Design.Metadata.Xaml.XamlExtensions.GetContentProperty(ITypeMetadata源)
在MS.Internal.Design.Metadata.ReflectionTypeNode.get_ContentProperty()
在MS.Internal.Design.Markup.XmlElement.CalcChildWhitespaceImportant(XamlElement元素)
在MS.Internal.Design.Markup.XmlElement.ConvertChildrenToXaml(XamlElement结果,PrefixScope范围,IParseContext上下文,IMarkupSourceProvider提供程序,布尔childrenAsString)
在MS.Internal.Design.Markup.XmlElement.ConvertToXaml(XamlElement父级,PrefixScope parentScope,IParseContext上下文,IMarkupSourceProvider提供程序)
在MS.Internal.Design.Markup.XmlElement.ConvertChildrenToXaml(XamlElement结果,PrefixScope范围,IParseContext上下文,IMarkupSourceProvider提供程序,布尔childrenAsString)
在MS.Internal.Design.Markup.XmlElement.ConvertToXaml(XamlElement父级,PrefixScope parentScope,IParseContext上下文,IMarkupSourceProvider提供程序)
在MS.Internal.Design.DocumentModel.DocumentTrees.Markup.XamlSourceDocument.ParseElementFromSkeleton(XamlParseContext上下文,SkeletonNode节点,XamlElement父级,布尔型fullElement)
在MS.Internal.Design.DocumentModel.DocumentTrees.Markup.XamlSourceDocument.UpdateSkeleton(IDamageListener侦听器)
在Microsoft.Windows.Design.DocumentModel.Trees.MarkupDocumentTreeManager.Update()
在Microsoft.Windows.Design.DocumentModel.MarkupProducer.Update()
在Microsoft.Windows.Design.DocumentModel.MarkupProducer.HandleMessage(DocumentTreeCoordinator发送者,MessageKey键,MessageArguments args)中
在Microsoft.Windows.Design.DocumentModel.MarkupProducer.Microsoft.Windows.Design.DocumentModel.IDocumentTreeConsumer.HandleMessage(DocumentTreeCoordinator发送者,MessageKey键,MessageArguments args)中
在Microsoft.Windows.Design.DocumentModel.DocumentTreeCoordinator.SendMessage [T](MessageKey`1键,T args,布尔值isPrivateMessage)
在Microsoft.Windows.Design.DocumentModel.DocumentTreeCoordinator.QueuedMessage`1.Microsoft.Windows.Design.DocumentModel.IQueuedMessage.Invoke()
在Microsoft.Windows.Design.DocumentModel.DocumentTreeCoordinator.ProcessQueuedMessages(对象状态)
在System.Windows.Threading.ExceptionWrapper.InternalRealCall(委托回调,对象args,Int32 numArgs)
在MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(对象源,委托方法,对象args,Int32 numArgs,委托catchHandler)

最佳答案

就在我要发布问题时,自动建议StackOverflow标签表明存在Silverlight Toolkit。显然这是我应该使用的。

由于我将所有精力都花在了问题上,因此在自动回答问题时,我将把问题和答案留给StackOverflow的证明。

编辑您需要Silverlight 3 Toolkit二进制文件才能使用DataGrid。您需要将这四个引用添加到项目中:


System.ComponentModel.DataAnnotations.dll
System.Windows.Controls.Data.dll
System.Windows.Controls.Data.Input.dll
System.Windows.Data.dll

关于silverlight-4.0 - WpfToolkit DataGrid在Windows Phone 7中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2499527/

10-15 02:28