私は3つの異なるページを含み、それぞれ異なるコンテンツを表示するユーザーコントロールを作成しようとしています。私の考えは、ユーザーコントロールのメイングリッドを作成し、その後、幅が3倍に設定された別のグリッドを作成し、その中に3つの列を作成することでした。次に、各ページコンテンツをラップして、各列のグリッドを作成します。次に、2つのボタンを作成してページをスライドさせ、変換変換アニメーションでそれらを変更します。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>
コードが単純化であった:次のように
コードであります私はそれが全体のものをilustratesだと思います。このグリッドはどのように処理できますか?私がここで意図したことをするための他の方法はありますか?また、あなたがそれらのグリッドのHeight
プロパティを設定する必要が
<Canvas Name="MainCanvas" Width="286" ClipToBounds="True">
:
おかげ
それは半分の私の問題のために、すべての権利を動作しますが、表示されていない上にあるもの表示されませんページ。問題は、他のページの画像が表示されないことです。 –
私の編集した答えをご覧ください。グリッドの高さを設定するか、ImageBrushの代わりにImageコントロールを使用する必要があります。 – Clemens
私はあなたが言ったことすべてを試みましたが、何も働かなかった/たぶん 'canvas.left'がそのトリックをするでしょう。 –