我试图做一个用户控件,它包含三个不同的页面,每个页面显示不同的内容。我的想法是做出以下几点:创建用户控制主网格,然后创建另一个网格,宽度设置为用户控件或主网格宽度的三倍,然后在其中创建三个列。然后,我会为每个列创建一个网格,将每个网页的内容包装起来。接下来,创建两个按钮来滑动页面,通过翻译转换动画更改它们。如何在WPF中创建多页面的UserControl?
我做得很好,但滑动不能正常工作:当网格翻译完成后,新页面的内容不会显示出来,而另一页面则保持可见用户控制。
的代码如下:
的.cs
private void TranslateMainGrid(bool right)
{
DoubleAnimation gridTranslateAnimation = new DoubleAnimation(); // Calculations not important
gridTranslateAnimation.From = right ? 0 - (this.SelectedPanel - 1) * 286 : 0 - (this.SelectedPanel + 1) * 286;
gridTranslateAnimation.To = 0 - this.SelectedPanel * 286;
gridTranslateAnimation.Duration
= new Duration(new TimeSpan(0, 0, 0, 0, 500));
TranslateTransform oTransform
= (TranslateTransform)PanelGrid.RenderTransform;
oTransform.BeginAnimation(TranslateTransform.XProperty,
gridTranslateAnimation);
}
的.xaml
<Grid x:Name="MainGrid" Height="400" Width="286" Background="#7B9D9D9D" RenderTransformOrigin="0.5,0.5">
<Grid x:Name="PanelGrid" Height="400" Width="858" RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<TranslateTransform X="0"/>
</Grid.RenderTransform>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid x:Name="ChimeraGrid" Grid.Column="0">
<Grid.Background>
<ImageBrush ImageSource="/GameView;component/Resources/arcaneCreature.png"/>
</Grid.Background>
</Grid>
<Grid x:Name="CreatureGrid" Grid.Column="1">
<Grid.Background>
<ImageBrush ImageSource="/GameView;component/Resources/chimeraTest.png"/>
</Grid.Background>
<Label Content="lolololol" Height="81" VerticalAlignment="Top" HorizontalAlignment="Right" Width="164"/>
</Grid>
<Grid x:Name="EquipmentGrid" Grid.Column="2">
<Grid.Background>
<ImageBrush ImageSource="/GameView;component/Resources/tribeCreature.png"/>
</Grid.Background>
</Grid>
</Grid>
</Grid>
的代码是简化但是我猜想它是整个东西的模样。我如何处理这个网格?有没有其他的方式来做我在这里的目的?
感谢
它为我一半的问题都行,这是不显示的是上不显示页。问题是其他页面的图像不显示。 – 2012-02-19 13:29:08
请看我编辑的答案。您必须设置网格的高度或使用图像控件而不是ImageBrush。 – Clemens 2012-02-19 15:38:23
我尝试了所有你说的,但没有任何工作; /也许'canvas.left'会做的伎俩。 – 2012-02-23 01:46:26