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

本文关键字:深度 缩放 图像 集合 v2 动态 PivotViewer | 更新日期: 2023-09-27 18:19:43

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

使用CXML,我可以为数据透视查看器预生成DZC/DZI(这是一个JIT集合),但我不知道如何使用Deep Zoom成像+带有数据绑定的新数据透视查看器。如何在数据绑定集合的项目模板中显示深度缩放图像?

我已经尝试使用PivotViewerMultiSizeImage类(下面的XAML)和PivotViewer MultiScaleSubImageHost类。我下面的例子几乎奏效了:它显示了一个图像,但似乎停留在100像素级别——没有深度缩放。我也尝试过使用DZI的MultiScaleImage控件,但运气不好,它会立即生成OutOfMemory异常。

有人知道如何在新的数据透视查看器中使用数据绑定获得深度缩放功能吗?

<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>

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

我已经实现了与对象集合的绑定,但对图像使用了深度缩放集合。我使用了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>

您将得到一个100x100的图像,因为您将其指定为控件的大小。更改的大小

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

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

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

这对我很有效,感谢你半途而废,因为你引导我走上了使用数据绑定获得深度缩放功能的正确道路