Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF Scrollviewer中的Textbox控件上启用滑动滚动_C#_Wpf_Touch_Scrollviewer - Fatal编程技术网

C# 在WPF Scrollviewer中的Textbox控件上启用滑动滚动

C# 在WPF Scrollviewer中的Textbox控件上启用滑动滚动,c#,wpf,touch,scrollviewer,C#,Wpf,Touch,Scrollviewer,我们正在WPF中开发触摸应用程序。 我们的ScrollViewer将属性PanningMode设置为“两者”,以启用滑动滚动。 在空白区域中滑动时,甚至在复选框和组合框控件上滑动时,这都可以正常工作 但是,在文本框上滑动时,将手指短按文本框并上下移动,ScrollViewer不会滚动。 是否有一种方法可以在所有控件上启用滑动滚动,并仅在点击时对其进行聚焦 可使用以下代码再现此行为: <Window x:Class="WpfSandbox.MainWindow" xmlns=

我们正在WPF中开发触摸应用程序。 我们的ScrollViewer将属性PanningMode设置为“两者”,以启用滑动滚动。 在空白区域中滑动时,甚至在复选框和组合框控件上滑动时,这都可以正常工作

但是,在文本框上滑动时,将手指短按文本框并上下移动,ScrollViewer不会滚动。 是否有一种方法可以在所有控件上启用滑动滚动,并仅在点击时对其进行聚焦

可使用以下代码再现此行为:

<Window x:Class="WpfSandbox.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">

    <ScrollViewer PanningMode="Both">
        <StackPanel>
            <TextBox Margin="5"></TextBox>
            <TextBox Margin="5"></TextBox>
            <TextBox Margin="5"></TextBox>
            <TextBox Margin="5"></TextBox>
            <TextBox Margin="5"></TextBox>
            <TextBox Margin="5"></TextBox>
            <TextBox Margin="5"></TextBox>
            <TextBox Margin="5"></TextBox>
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
        </StackPanel>
    </ScrollViewer>
</Window>

我设法解决了这个问题。 TextBox控件不滑动滚动的原因是,它们的控件模板还包含一个ScrollViewer,其PanningMode设置为VerticalFirst。 VerticalFirst允许在水平滑动时选择文本框文本

仅当将TextBox ScrollViewer.PanningMode设置为“无”时,此控件上的滑动滚动才会保持,这将禁用选择。这是复选框和组合框控件的默认行为,因为它们的ControlTemplate中不包含ScrollViewer

我修改了示例以显示这种行为:

<Window x:Class="WpfSandbox.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">

    <ScrollViewer PanningMode="Both">
        <StackPanel>
            <TextBox Margin="5" ScrollViewer.PanningMode="Both">Panningmode both</TextBox>
            <TextBox Margin="5" ScrollViewer.PanningMode="HorizontalFirst">Panningmode HorizontalFirst</TextBox>
            <TextBox Margin="5" ScrollViewer.PanningMode="HorizontalOnly">Panningmode HorizontalOnly</TextBox>
            <!-- Allows swipe scrolling -->
            <TextBox Margin="5" ScrollViewer.PanningMode="None">Panningmode None</TextBox>
            <TextBox Margin="5" ScrollViewer.PanningMode="VerticalFirst">Panningmode VerticalFirst</TextBox>
            <TextBox Margin="5" ScrollViewer.PanningMode="VerticalOnly">Panningmode VerticalOnly</TextBox>
            <TextBox Margin="5" ScrollViewer.PanningMode="Both" Height="60" xml:space="preserve" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" >Panning set to both&#x0a;test 2&#x0a;test 2&#x0a;test 2&#x0a;test 2&#x0a;test 2</TextBox>
            <!-- Allows swipe scrolling -->
            <TextBox Margin="5" ScrollViewer.PanningMode="None" Height="60" xml:space="preserve" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" >Panning set to none&#x0a;test 2&#x0a;test 2&#x0a;test 2&#x0a;test 2&#x0a;test 2</TextBox>
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <CheckBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
            <ComboBox Margin="5" />
        </StackPanel>
    </ScrollViewer>
</Window>