1

我有一个 CXML 文件,它描述了一个包含许多对象的 Pivot 集合。每个对象都由一个标签描述,例如:

<I Id="0" N="0" Source="tiles/684.xml">
  <Size Width="2604" Height="3140"/>
</I>

CxmlCollectionSource我使用连接到控件的 CXML 加载 CXML PivotViewer。这一切都很好。

现在我想显示对应于集合中任何对象的图像PivotViewer。我已经MultiScaleImage在我的应用程序中添加了一个控件来做到这一点。它有一个Source属性,可以接受指向 DeepZoom XML 文件(即SourceCXML 中的属性引用的文件)的 URL。

但我不知道如何获得该值,因为似乎没有任何方法可以PivotViewerItem通过CxmlCollectionSource. PivotViewerItem有一个VisualImageId属性,它是项目集合的索引,但这并没有多大帮助,因为我无法从该 ID 获取Source属性。

同样,最终目标只是显示与 Pivot 集合中的对象相对应的图像。如果有更好/更简单的方法来做到这一点,我很想听听!

4

1 回答 1

0

它背后的文档不多,但这是在项目模板中绑定到图像源的方式:

<pivot:PivotViewerItemTemplate x:Key="smallTemplate" MaxWidth="300">
        <pivot:PivotViewerMultiScaleSubImageHost VerticalAlignment="Top" CollectionSource="{Binding [VisualCollectionSource][0] }" ImageId="{Binding [VisualImageId][0]}"/>
    </pivot:PivotViewerItemTemplate>
<pivot:PivotViewerItemTemplate x:Key="largeTemplate">
    <Grid Width="900" Height="1000" Background="LightGray">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <pivot:PivotViewerMultiScaleSubImageHost  CollectionSource="{Binding [VisualCollectionSource][0] }" ImageId="{Binding [VisualImageId][0]}"/>
        <Grid Margin="20" Grid.Row="1">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <TextBlock Text="{Binding [Name][0]}" FontSize="28" TextWrapping="Wrap"/>
            <Grid Grid.Row="1">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <TextBlock Text="{Binding [Description][0]}" FontSize="20" TextWrapping="Wrap" Margin="0,20, 0, 0"/>
                <StackPanel Orientation="Vertical" Margin="20,20,20,0" Grid.Column="1" Width="300">
                    <TextBlock Text="Speakers" FontSize="24"/>
                    <ListBox ItemsSource="{Binding [Speakers]}" FontSize="22"/>
                </StackPanel>
            </Grid>
        </Grid>
    </Grid>
</pivot:PivotViewerItemTemplate>

请注意,您可能只需要上面的“smallTemplate”,除非您在交易卡中添加一些花哨的东西。您需要在后面的代码中设置模板:

pv.ItemTemplates = new PivotViewerItemTemplateCollection()
            {
                (PivotViewerItemTemplate) Resources["smallTemplate"],
                (PivotViewerItemTemplate) Resources["largeTemplate"]
            };
于 2013-01-09T00:07:15.680 回答