2

テキストブロックのテキストをスクロールする必要があります。たとえば、テキストブロックには 700 語が含まれています。これらの単語は、コードビハインドからテキストブロックに取り込まれます。これは、「内容」によっては異なる 700 単語になる可能性があるためです。このフォームにもテキストボックスがあります。ユーザーは、テキストブロック内の単語をテキストボックスに入力します。彼らが入力すると、テキストブロックのどの単語が表示されているかを追跡します。ただし、テキストブロック内のすべての単語がテキストブロックの表示領域に収まるわけではないため、コードビハインドからテキストブロックをスクロールする必要があります。どうすればこれを行うことができますか。

Silverlight 3 を使用しています。

ありがとうシャノン

いくつかのコードを入れると便利かもしれません...これがスクロールビューアとテキストブロックです

            <ScrollViewer x:Name="svSourceText" Width="591" MaxHeight="202" VerticalScrollBarVisibility="Auto">

                <TextBlock Height="202" Width="591"  TextWrapping="Wrap" 
                x:Name="txtSource" FontSize="12" FontFamily="Fonts/Fonts.zip#Consolas" LineHeight="21.333"
                           />

        </ScrollViewer>

手始めに..テキストをtxtSourceに追加すると、スクロールビューアはスクロールバーを必要な高さに変更しません。

4

2 に答える 2

1

TextBlock をスクロールビューアに配置します。ユーザーが TextBox にテキストを入力したときにイベントをキャプチャします。現在キャプチャされている単語に対して有効であることを確認してから、TextBlock をスクロールします。

ここに例があります。ユーザーがスペースバーを押すたびにスクロールしているだけなので、入力されている単語の有効性を確認する必要があります。

XAML:

    <Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition Height="25" />
        <RowDefinition Height="40" />
    </Grid.RowDefinitions>

    <TextBox Name="txtInput" KeyUp="TextBox_KeyUp" Width="200" Grid.Row="0" />

    <ScrollViewer Name="scrollViewer" Grid.Row="1" MaxHeight="25" MaxWidth="250" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Hidden">            
        <TextBlock>
            One
            <LineBreak />
            Two
            <LineBreak />
            Three
            <LineBreak />
            Four
            <LineBreak />
            Five
        </TextBlock>

    </ScrollViewer>


</Grid>

イベント「KeyUp」のコード:

        private void TextBox_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.Key.ToString().ToLower() == "space")
        {
            scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset + 15);
        }
    }
于 2010-02-25T21:15:43.190 に答える