同じページで Silverlight と XNA の両方を組み合わせて使用する WP7 用のゲームを作成しました。このページには、GamePage.xaml ページに表示される 3 つの個別の Silverlight コントロールが含まれていました。
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBox Name="box2" Height="74" Margin="0,0,132,8" TextWrapping="Wrap" Text="" VerticalAlignment="Bottom"/>
<TextBox Name="box1" Margin="0,480,8,82" TextWrapping="Wrap" Text="" IsReadOnly="True"/>
</Grid>
<Button Content=" send " Margin="0,0,20,8" Click ="sendMessage_Click" Grid.Row="1" Height="74" VerticalAlignment="Bottom" HorizontalAlignment="Right"/>
</Grid>
WP7 では、GamePage.xaml.cs のこの C# コードを使用して、3 つの Silverlight コントロールが正しく描画されました。
UIElementRenderer elementRenderer;
void GamePage_LayoutUpdated(object sender, EventArgs e)
{
if (ActualHeight > 0 && ActualWidth > 0 && elementRenderer == null)
{
elementRenderer = new UIElementRenderer(this, (int)ActualWidth, (int)ActualHeight);
}
}
private void OnDraw(object sender, GameTimerEventArgs e)
{
SharedGraphicsDeviceManager.Current.GraphicsDevice.Clear(Color.CornflowerBlue);
elementRenderer.Render();
spriteBatch.Begin();
spriteBatch.Draw(elementRenderer.Texture, Vector2.Zero, Color.White);
spriteBatch.End();
}
WP8 では、3 つの Silverlight コントロールはすべて、表示されるべき場所を押すことで使用できますが、box1 のみが描画され、他のコントロールが配置されるはずの空の透明なスペースがあります。
これは解決が難しい問題になる可能性があることを私は知っています。