2012-01-08 6 views
1

Я использую PivotViewer v2, выпущенный с помощью Silverlight 5. Я начал использовать новую способность связывания данных PivotViewer, привязывая непосредственно к объектам данных, переданным с сервера, и используя ItemTemplate для отображения объектов в PivotViewer.Динамическая коллекция PivotViewer v2 И изображения с глубоким увеличением

С CXML я мог бы сгенерировать DZCs/DZI для сводного просмотра (это коллекция JIT), но я не могу понять, как использовать Deep Zoom imaging + новый Pivotviewer с привязкой данных. Как отображать изображение с глубоким увеличением в шаблоне элемента для коллекции, связанной данными?

Я пробовал использовать класс PivotViewerMultiSizeImage (XAML ниже) и класс PivotViewerMultiScaleSubImageHost. Мой пример ниже почти работает: он отображает изображение, но, похоже, застрял на уровне 100 пикселей - без Deep Zoom. Я также пробовал управление MultiScaleImage с DZI, но не повезло - он немедленно генерирует исключение OutOfMemory.

Кто-нибудь знает, как получить возможность Deep Zoom с привязкой данных в новом 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> 

ответ

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 на моем самом большом изображении.

Это сработало для меня, потому что на полпути это выяснилось, потому что вы ведете меня по правильному пути, чтобы получить глубокое масштабирование, как функциональность с привязкой данных!