2017-02-03 3 views
1

このテキストボックスは決してスクロールできません。私はそれが垂直に拡大してすべてのテキストを「表示」するためだと確信しています。しかし、それはグリッド行の下を過去(とその下)に展開しているので、テキストは表示されません - スクロールバーは無効になります(表示する理由はないと考えているため)。WPFのスクロール可能なテキストボックスは、コンテナよりも大きいためスクロールしません。

結果は、私はそれはそれはそれはしていたグリッドセルの底に到達したときに遮断しますファイル内のテキストの先頭を参照してください、とされて私がコントロールを伝えるために何をする必要がありますどのような

。: 「あなたが入っているグリッドセルの幅と高さに展開し、テキストがそのスペースに収まらないときは垂直スクロールバーを表示しますか?」

<StackPanel Grid.Column="1" Grid.Row="1"> 
    <ScrollViewer CanContentScroll="True" VerticalScrollBarVisibility="Visible"> 
    <TextBlock x:Name="longText" Foreground="White" FontFamily="Times New Roman" FontSize="24" TextWrapping="Wrap" /> 
    </ScrollViewer> 
</StackPanel> 

答えて

1

これに変更すると機能します。

<ScrollViewer Grid.Column="1" Grid.Row="1" VerticalScrollBarVisibility="Auto"> 
    <StackPanel> 
     <TextBlock x:Name="longText" Foreground="White" FontFamily="Times New Roman" FontSize="24" TextWrapping="Wrap" /> 
    </StackPanel> 
</ScrollViewer> 

しかし、同じ時間に、あなたのグリッドの高さが*に設定するか、固定サイズであることを確認する必要があります:あなたはそれの内側に複数のコントロールを持っていない限り

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> //Or whatever size you want 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

<ScrollViewer Grid.Column="1" Grid.Row="1" VerticalScrollBarVisibility="Auto"> 
    <StackPanel> 
     <TextBlock x:Name="longText" Foreground="White" FontFamily="Times New Roman" FontSize="24" TextWrapping="Wrap" /> 
    </StackPanel> 
</ScrollViewer> 

</Grid> 

はところで、あなたのStackPanelが冗長です。

EDIT: まあ... mm8user2837961などのまず第一にStackPanelが無限に拡張することができますのでScrollviewerは、StackPanel内意味をなさない説明しました。 ScrollViewerは、その内部のオブジェクトが自分自身であればサイズよりも大きい場合にのみ動作します。 Grid rowのサイズを*と指定すると、その行のグリッドの残りのスペースを割り当てます。つまり、その行に属するアイテムは固定サイズになります。 TextboxScrollViewerサイズより大きい場合、ScrollBarVisibilityがトリガーされます。

+0

作品です! grid.rowとgrid.columnはテキストボックスに属していませんでしたが、その代わりに超流動スタックパネルに入っていたのでしょうか? – DrDamnit

2

なぜStackPanelが必要ですか?私はあなたがそれを削除し、ScrollViewerGrid.ColumnGrid.Rowを置いてお勧め:StackPanels内ScrollViewersを置く

<ScrollViewer Grid.Column="1" Grid.Row="1" CanContentScroll="True" VerticalScrollBarVisibility="Visible"> 
     <TextBlock x:Name="longText" Foreground="White" FontFamily="Times New Roman" FontSize="24" TextWrapping="Wrap" /> 
</ScrollViewer> 
1

は悪い考えです。これは、OrientationプロパティがHorizo​​ntalに設定され、Verticalに設定されている場合、無限の垂直スペースが設定されている場合、StackPanelは無限の水平スペースを持つ子を測定するためです。この詳細についてはここに私の答えを参照してください:

Horizontal scroll for stackpanel doesn't work

これは、基本的にはScrollViewerの要素がここに無限の高さを持っているので、何の垂直スクロールバーが表示されないことを意味します。

@ user2837961によって提案されたように、あなたは、単にのStackPanelを取り除く必要があります。

<ScrollViewer Grid.Column="1" Grid.Row="1" VerticalScrollBarVisibility="Visible"> 
    <TextBlock x:Name="longText" Foreground="White" FontFamily="Times New Roman" FontSize="24" TextWrapping="Wrap" /> 
</ScrollViewer> 

また他のStackPanelは、ビジュアルツリーまで、さらには存在しないことを確認してください。

関連する問題