PivotViewer v2 动态采集和深度缩放图像
我正在使用随 Silverlight 5 一起发布的 PivotViewer v2。我已经开始使用 PivotViewer 的新数据绑定功能,直接绑定到从服务器传递下来的数据对象,并使用 ItemTemplate 在 PivotViewer 中显示对象。
使用 CXML,我可以为数据透视查看器预先生成 DZC/DZI(它是 JIT 集合),但我不知道如何使用 Deep Zoom 成像 + 带数据绑定的新 Pivotviewer。如何在数据绑定集合的项目模板中显示深度缩放图像?
我尝试使用 PivotViewerMultiSizeImage 类(下面的 XAML)和 PivotViewerMultiScaleSubImageHost班级。我下面的示例几乎可以工作:它显示图像,但似乎停留在 100 像素级别 - 没有深度缩放。我还尝试过 MultiScaleImage 使用 DZI 进行控制,但运气不佳 - 它立即生成 OutOfMemory 异常。
有谁知道如何在新的 PivotViewer 中通过数据绑定获得深度缩放功能?
<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>
I am using the PivotViewer v2 released with Silverlight 5. I've started to use the new data binding ability of the PivotViewer, binding directly to data objects that are passed down from the server, and using an ItemTemplate to display the objects in the PivotViewer.
With CXML, I could pre-generate the DZCs/DZIs for the pivot viewer (it's a JIT collection), but I can't figure out how to use Deep Zoom imaging + the new Pivotviewer with data binding. How can I display a deep zoom image in an item template for a collection that is data bound?
I've tried using the PivotViewerMultiSizeImage class (XAML below) and the PivotViewerMultiScaleSubImageHost class. My example below almost works: it displays an image, but seems to be stuck at the 100 pixel level - no Deep Zoom. I've also tried the MultiScaleImage control with DZIs, but no luck - it generates an OutOfMemory exception immediately.
Does anyone know how to get Deep Zoom capability with data binding in the new PivotViewer?
<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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我已经实现了与对象集合的绑定,但正在对图像使用深度缩放集合。我使用了 Excel 工具,但只给了它图像的路径(按名称排序)和名称。我没有使用 cxml 文件,但使用了所有其余的深度缩放图像文件。我向集合中的数据对象添加了一个名为 Img 的属性。 Img 是该对象的图像集合中的图像编号索引(从 0 开始)。然后,我的 PivotViewer ItemTemplate 绑定到此属性。 CollectionSource 属性设置为我的图像集合 xml 文件的路径(它在生成的 cxml 中命名)。
I've implemented binding to a collection of objects but am using a deep zoom collection for the images. I used the Excel tool but only gave it the path to the images (sorted by Name) and a name. I didn't use the cxml file, but did use all of the rest of the deep zoom image files. I added a property to the data objects in the collection, called Img. Img is the image number index in the image collection for that object (0 based). Then, my PivotViewer ItemTemplate binds to this property. The CollectionSource property is set to the path to my image collection xml file(it is named in the generated cxml).
您将获得 100x100 的图像,因为您将其指定为控件的大小。 的大小更改
将
为
或足够大的内容以显示最大的图像。另外,我不确定这是否重要,但我没有在最大的图像上放置 MaxHeight/MaxWidth。
这对我有用,感谢您半途而废,因为您引导我走上了正确的道路,通过数据绑定获得类似深度缩放的功能!
You're getting a 100x100 image because you are specifying this as the size of your control. Change the size of
<pivot:PivotViewerMultiSizeImage Width="100" Height="100">
to
<pivot:PivotViewerMultiSizeImage Width="2000" Height="2000">
or something big enough to cause the largest image to show. Also, I'm not sure if this matters or not, but I didn't put a MaxHeight/MaxWidth on my largest image.
This worked for me, thanks for halfway figuring this out because you lead me down the right path to getting deep zoom like functionality with databinding!