私は私を助ける解決策を見つけることができませんでした。私が望んでいたのは、私の投稿の最後のコメントが実現したことであることに気づきました。回転が変化しても広告の向きを維持します。
これを実現するには、LayoutTransformを使用できますが、WP8では使用できません。当初、回転の変更時にオンとオフを切り替えるフローティングメニューがありましたが、別のサイズの画面では面倒でした。
私が見つけた最もクリーンなブルートフォースソリューションは、3x5(行メジャー)グリッドレイアウトを作成することです。私のメインページは一番中央のグリッドにあり、広告はすぐ左、右、下にあります。そして最後に、左端と右端のグリッドに2つのフィラースペースがあります。
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto "/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid Grid.Row="1" Grid.Column="2">
<phone:Pivot x:Name="ContentPanel">
...
</phone:Pivot>
</Grid>
<Grid Name="AdBottom" Grid.Row="2" Grid.Column="2">
...
</Grid>
<Grid Name="AdRight" Grid.Row="1" Grid.Column="3" MaxWidth="80">
<adduplex:AdControl x:Name="adDuplexAdRight" AppId="?????"
RenderTransformOrigin="0.5,0.5"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="-200,0" Visibility="Collapsed">
<adduplex:AdControl.RenderTransform>
<CompositeTransform Rotation="90"/>
</adduplex:AdControl.RenderTransform>
</Grid>
<Grid Name="AdLeft" Grid.Row="1" Grid.Column="1" MaxWidth="80">
... <As Above, just negated>
</Grid>
<Grid Name="FillerLeft" Grid.Row="1" Grid.Column="0" MinWidth="80" Visibility="Collapsed">
</Grid>
<Grid Name="FillerRight" Grid.Row="1" Grid.Column="4" MinWidth="80" Visibility="Collapsed">
</Grid>
</Grid>
フィラー要素とその最小幅の理由は、マージンのオーバーフローを支援するためです。これがないと、Rendertransformを使用して要素を回転させることができますが、コンテナを希望のサイズに強制的に縮小しようとすると、正しく表示されませんでした。これは、レンダリング後に回転が発生するためです。オーバーフローを可能にするための余分な埋め込み列がないと、要素は回転時にスライスされます。
そのため、オーバーフローを実行して広告の余白を拡張すると、広告がフローティングではなくグリッドにロックされた状態で表示されるようになります。次に、rotationchangedイベントで広告の表示とフィラー領域を切り替えることができます。
これは私が持っていた最も簡単な解決策です。他のユーザーは、ここに表示されているように、SilverlightLayoutTransformerを組み込むことを検索できます。または、有料のツールキットからのものを使用している場合。これは私のシンプルなアプリではこれまでのところ機能します。