1

多数のオブジェクトを含む Pivot コレクションを記述した CXML ファイルがあります。各オブジェクトは、次のようなタグで記述されます。

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

CxmlCollectionSourceコントロールに接続する を使用して CXML をロードしますPivotViewer。これはすべてうまくいきます。

ここで、コレクション内の任意のオブジェクトに対応する画像を の外側に表示したいと考えていますPivotViewerMultiScaleImageそれを行うために、アプリにコントロールを追加しました。SourceDeepZoom XML ファイル (つまりSource、CXML の属性によって参照されるファイル) への URL を受け入れるプロパティがあります。

しかし、その値を取得する方法がわかりませPivotViewerItemCxmlCollectionSourcePivotViewerItem項目コレクションへのインデックスであるVisualImageIdプロパティがありますが、その ID からSource属性にアクセスできないため、あまり役に立ちません。

繰り返しますが、最終的な目的は、Pivo​​t コレクション内のオブジェクトに対応する画像を表示することです。それを行うためのより良い/簡単な方法があれば、ぜひ聞いてみたいです!

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 に答える