PivotViewer v2动态集合和深度缩放图像

时间:2012-01-08 22:29:17

标签: c# silverlight xaml deepzoom pivotviewer

我正在使用随Silverlight 5发布的PivotViewer v2。我已经开始使用PivotViewer的新数据绑定功能,直接绑定到从服务器传递的数据对象,并使用ItemTemplate显示对象在数据透视表中。

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

我尝试过使用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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

的大小

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

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

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

这对我有用,感谢中途解决这个问题,因为你带领我走向正确的道路,通过数据绑定获得深度缩放功能!