2012-01-24 13 views
3

スプラッシュ画面にテキストの進捗状況を表示するコントロールを作成する必要があります(たとえば、読み込まれたさまざまなモジュールと起動状態が表示されます)。私は、新しいテキストが滑らかなアニメーションの方法で前のテキストを押し上げるように、最後の3行または4行だけを表示するようにしたいと思います。スムーズスクロールの進捗状況のテキスト

このコントロールまたは他のコントロールにTextBoxコントロールを使用する必要がありますか?誰かが私を正しい方向に向けることができれば、それはすばらしいことになります。

+0

スムーズなスクロールテキストは厳しいです! 「滑らかさ」が必要な場合は、どのハードウェアが必要かを確認してください! –

+2

コード例の時間がないのでコメントには答えませんが、Canvasから派生したカスタムコントロールを作成することを検討しましたか?ラインの4x TextBlocksを含み、Canvas.GetTop添付プロパティをアニメーション化しましたか? –

+1

TextBlocks(テキストボックスではない)を使用しているはずです。 Andrew Burnett-Thompson博士のコメントで説明されているように、ストーリーボードを使ってポジションをアニメートすることもできます。 –

答えて

0

この効果は、ListBox、テキストはListBoxItem、カスタムアニメーションPanelと非常に簡単に適用できます。要するに、Panelは、各アイテムのRenderTransformプロパティにTransform個のオブジェクトを追加します。これによりアイテムの移動をその位置にアニメートできます。

articleをご覧になるには、Panelアニメーションの作成方法をご覧ください。もちろん、カスタムコードを書いて、必要な方法で並べ替える必要があります。カスタムPanelを持っていたら、そのように(あなたのPanelが入っている名前空間への参照が含まれていると仮定)ListBoxでそれを使用することができます。

<ListBox HorizontalContentAlignment="Stretch" 
    ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <YourXmlns:YourAnimatedStackPanelPanel /> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</ListBox> 
0

だけと思ったが、あなたが持っているしたいと述べました別の行が追加されると、一度に1行スクロールします。 ScrollViewer.LineUpの使用はどうですか?私はこの非常に荒いけど、考え方として...

private void ScrollBox() 
{ 
    foreach (string line in lines) 
    { 
     scrollbox.LineUp(); 
     textbox.Text += "/r/n Next Line"; 
    } 
} 
関連する問題