2012-01-08 64 views
1

我使用随Silverlight 5发布的PivotViewer v2。我已经开始使用PivotViewer的新数据绑定功能,它直接绑定到从服务器传递下来的数据对象,并使用ItemTemplate在PivotViewer中显示对象。PivotViewer v2动态收集和深度缩放图像

使用CXML,我可以预先生成数据透视查看器(它是JIT集合)的DZCs/DZI,但我无法弄清楚如何使用Deep Zoom图像+带有数据绑定的新数据透视表。如何在数据绑定的集合的项目模板中显示深度缩放图像?

我试过使用PivotViewerMultiSizeImage类(下面的XAML)和PivotViewerMultiScaleSubImageHost类。我下面的例子几乎可以工作:它显示图像,但似乎卡在100像素级别 - 没有深度缩放。我也试着用DZI控制MultiScaleImage,但没有运气 - 它立即产生一个OutOfMemory异常。

有谁知道如何在新的PivotViewer中获得数据绑定的Deep Zoom功能吗?

<pivot:PivotViewer.ItemTemplates> 
<pivot:PivotViewerItemTemplate> 

<pivot:PivotViewerMultiSizeImage Width="100" Height="100"> 
    <pivot:PivotViewerMultiSizeImage.Sources> 
      <pivot:PivotViewerMultiSizeImageSource MaxHeight="100" MaxWidth="100" UriSource="{Binding Images[2]}" /> 
      <pivot:PivotViewerMultiSizeImageSource MaxHeight="300" MaxWidth="300" UriSource="{Binding Images[3]}" /> 
      <pivot:PivotViewerMultiSizeImageSource MaxHeight="500" MaxWidth="500" UriSource="{Binding Images[4]}" /> 
      <pivot:PivotViewerMultiSizeImageSource MaxHeight="700" MaxWidth="700" UriSource="{Binding Images[5]}" /> 
      <pivot:PivotViewerMultiSizeImageSource MaxHeight="20000" MaxWidth="20000" UriSource="{Binding Images[6]}" /> 
    </pivot:PivotViewerMultiSizeImage.Sources> 
</pivot:PivotViewerMultiSizeImage> 

</pivot:PivotViewerItemTemplate> 
</pivot:PivotViewer.ItemTemplates> 

回答

0

我已经实现了绑定到一个对象集合,但我使用深度缩放集合的图像。我使用Excel工具,但只给它的图像路径(按名称排序)和名称。我没有使用cxml文件,但确实使用了所有其他的深度缩放图像文件。我向集合中的数据对象添加了一个属性,称为Img。 Img是该对象的图像集合中的图像编号索引(基于0)。然后,我的PivotViewer ItemTemplate绑定到此属性。 CollectionSource属性设置为我的图像集合xml文件的路径(它在生成的cxml中命名)。

  <Visualizer:MyPivotViewer x:Name="RedemptionPivot" > 
       <Pivot:PivotViewer.ItemTemplates> 
        <Pivot:PivotViewerItemTemplate > 
         <Pivot:PivotViewerMultiScaleSubImageHost ImageId="{Binding Img}" CollectionSource="http://www.redemptionlive.com/Visualizer5/RedemptionCards_files/e3tbc2s0.4td.xml"/> 
        </Pivot:PivotViewerItemTemplate> 
       </Pivot:PivotViewer.ItemTemplates> 
       <Pivot:PivotViewer.PivotProperties> 
        <Pivot:PivotViewerStringProperty Id="Name" Options="CanFilter,CanSearchText" DisplayName="Name" Binding="{Binding Name}" /> 
        <!--The rest of the properties go here--> 
       </Pivot:PivotViewer.PivotProperties> 
      </Visualizer:MyPivotViewer> 
0

您正在获得100x100的图像,因为您将其指定为控件的大小。的

<pivot:PivotViewerMultiSizeImage Width="100" Height="100">

大小更改为

<pivot:PivotViewerMultiSizeImage Width="2000" Height="2000">

或东西大到足以造成最大的图像显示。另外,我不确定这是否重要,但我没有将MaxHeight/MaxWidth放在我的最大图像上。

这对我来说很有用,谢谢你的一半解决这个问题,因为你把我带到正确的道路上,获得像数据绑定功能一样的深度缩放!