none
ScrollViewer如何通过触摸滚动 RRS feed

  • 问题

  • <ScrollViewer Margin="124,62,63,147">
                <TextBlock HorizontalAlignment="Left"
                       TextWrapping="Wrap" Text="WPF:如何调用TextBox来不断添加内容,可以显示滚动条,滚动条始终处于最下面?  WPF:如何调用TextBox来不断添加内容,可F:如何调用TextBox来不断添加内容,可以显示滚动条,滚动条始终处于最下面?  
                       WPF:如何调用TextBox来不断添加内容,可以显示滚动条,滚动条始终处于最下面?  WPF:如何调用TextBox来不断添加内容,可以显示滚动条,滚动条始终处于最下面?  " VerticalAlignment="Top" FontSize="20"/>
            </ScrollViewer>

    如上,scrollviewer有滚动条出现,想通过触摸来上拉下拉移动内部的显示内容。只有自己实现TouchDown、TouchMove、TouchUp来解决?有其他简便办法吗?

    谢谢

    2014年9月26日 8:36

答案

  • 你好,

    >>想通过触摸来上拉下拉移动内部的显示内容。只有自己实现TouchDown、TouchMove、TouchUp来解决?有其他简便办法吗

    根据你的代码,据我所知,处理Touch事件结合Transform变换时目前可能的方案,以下是对Mouse事件的处理,对于触摸也适用:

    <ScrollViewer Margin="124,62,63,147" Name="sv1">
                <TextBlock HorizontalAlignment="Left"
                       TextWrapping="Wrap" Text="WPF:如何调用TextBox来不断添加内容,可以显示滚动条,滚动条始终处于最下面?  WPF:如何调用TextBox来不断添加内容,可F:如何调用TextBox来不断添加内容,可以显示滚动条,滚动条始终处于最下面?  
                       WPF:如何调用TextBox来不断添加内容,可以显示滚动条,滚动条始终处于最下面?  WPF:如何调用TextBox来不断添加内容,可以显示滚动条,滚动条始终处于最下面?  " VerticalAlignment="Top" FontSize="20" MouseDown="TextBlock_MouseDown" MouseUp="TextBlock_MouseUp" MouseMove="TextBlock_MouseMove" TouchDown="TextBlock_TouchDown" TouchMove="TextBlock_TouchMove" TouchUp="TextBlock_TouchUp">
                    <TextBlock.RenderTransform>
                        <TranslateTransform x:Name="trans1" Y="0" />
                    </TextBlock.RenderTransform>
                </TextBlock>
            </ScrollViewer>

    public MainWindow()
            {
                InitializeComponent();
                p = new Point();
            }
            bool isStartScroll = false;
            Point p;
            private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e)
            {
                isStartScroll = true;
                p = Mouse.GetPosition(sv1);
                
            }
    
            private void TextBlock_MouseUp(object sender, MouseButtonEventArgs e)
            {
                isStartScroll = false;
            }
    
            private void TextBlock_MouseMove(object sender, MouseEventArgs e)
            {
                Point p2 = Mouse.GetPosition(sv1);
                if(isStartScroll==true)
                {
                    if(p2.Y>=p.Y)
                        trans1.Y -= 10;
                    else
                        trans1.Y += 10;
                }
            }

    截图:


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年9月29日 10:27
    版主