如何在WPF中同步两个滚动条

时间:2019-03-13 10:00:28

标签: wpf xaml scrollbar

这些天我正在学习WPF。

我做了一些如下所示的XAML。

  <TextBox x:Name="TxtHex" IsReadOnly="True" MinWidth="500"                              
           ScrollViewer.HorizontalScrollBarVisibility="Disabled"
           Grid.Column="1"
           HorizontalScrollBarVisibility="Disabled"
           VerticalScrollBarVisibility="Visible"
           Style="{StaticResource Textbox}"/>

  <ScrollViewer Grid.Column="2">
           <TextBox x:Name="TxtAnsi" Margin="0,0,5,0" IsReadOnly="True" 
                    ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                    Style="{StaticResource Textbox}"/>
  </ScrollViewer>

我用VerticlaScrollBar和ScrollViewer制作了两个文本框。

我希望当一个滚动条更改值时,这两个滚动条具有相同的值。

我的意思是,我想同步两个滚动条。

所以,我想获取scollbar的值并将其值设置为滚动条。

我一直在搜索,但是我无法获得任何信息。

如果有人有个好主意,请给我一些提示。

谢谢。

1 个答案:

答案 0 :(得分:0)

首先,设置您的XAML代码(注意:您可以更改背景)

<TextBox ScrollBar.Scroll="TxtHex_Scroll" AcceptsReturn="True" x:Name="TxtHex" 
IsReadOnly="True" MinWidth="500"                              
           ScrollViewer.HorizontalScrollBarVisibility="Disabled"
           HorizontalScrollBarVisibility="Disabled"
           VerticalScrollBarVisibility="Visible" Margin="22,231,271.6,10" 
Background="#FFE2E2E2"
           />

        <ScrollViewer ScrollBar.Scroll="Scroll_Scroll" x:Name="scroll" 
Margin="22,47,271.6,194">
             <TextBox x:Name="TxtAnsi" IsReadOnly="True" AcceptsReturn="True" 
                    ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
Background="#FFF7EEEE"
                    />
        </ScrollViewer>

然后转到代码:

private void TxtHex_Scroll(object sender, System.Windows.Controls.Primitives.ScrollEventArgs e)
        {
            scroll.ScrollToVerticalOffset(TxtHex.VerticalOffset);
            scroll.UpdateLayout();

        }

        private void Scroll_Scroll(object sender, System.Windows.Controls.Primitives.ScrollEventArgs e)
        {
            TxtHex.ScrollToVerticalOffset(scroll.VerticalOffset);
            scroll.UpdateLayout();
        }

不要忘记在其中添加文字。因此,当您滚动一个滚动条时,另一个滚动条将以相同的值滚动。但是他们两个都需要足够的文本才能滚动。