C# ScrollViewer.ChangeView()不水平滚动

C# ScrollViewer.ChangeView()不水平滚动,c#,xaml,windows-phone-8.1,scrollviewer,C#,Xaml,Windows Phone 8.1,Scrollviewer,我正在尝试创建两个分别垂直和水平滚动的ScrollViewer 滚动应该在检测到操纵增量事件时开始,我已经使用ChangeView方法相应地移动了ScrollViewer。垂直的scrollviewer可以,但水平的scrollviewer不一样。 我添加了一个来显示2个滚动查看器,因为我不能在这里发布它 下面是代码:XAML <!--horizontal scrollviewer--> <ScrollViewer x:Name="horizontalS

我正在尝试创建两个分别垂直和水平滚动的ScrollViewer

滚动应该在检测到操纵增量事件时开始,我已经使用ChangeView方法相应地移动了ScrollViewer。垂直的scrollviewer可以,但水平的scrollviewer不一样。 我添加了一个来显示2个滚动查看器,因为我不能在这里发布它

下面是代码:XAML

   <!--horizontal scrollviewer--> 
   <ScrollViewer x:Name="horizontalScrollViewer" 
                  Grid.Column="1"
                  Grid.RowSpan="3"
                  HorizontalScrollMode="Disabled"
                  VerticalScrollMode="Disabled">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="80"/>
                <RowDefinition Height="100"/>
                <RowDefinition Height="80"/>
            </Grid.RowDefinitions>
            <!--upperGrid-->
            <GridView Grid.Row="0"
                      ScrollViewer.HorizontalScrollMode="Disabled"
                      ScrollViewer.VerticalScrollMode="Disabled"
                      ItemsSource="{Binding dataItems}">
                <GridView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <VariableSizedWrapGrid Orientation="Vertical"
                                           MaximumRowsOrColumns="1"/>
                    </ItemsPanelTemplate>
                </GridView.ItemsPanel>
                <GridView.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Height="80" Width="80" Text="{Binding}"/>
                    </DataTemplate>
                </GridView.ItemTemplate>
            </GridView>
            <!--bottomGrid-->
            <GridView Grid.Row="2"
                      ScrollViewer.HorizontalScrollMode="Disabled"
                      ScrollViewer.VerticalScrollMode="Disabled"
                      ItemsSource="{Binding dataItems}">
                <GridView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <VariableSizedWrapGrid Orientation="Vertical"
                                           MaximumRowsOrColumns="1"/>
                    </ItemsPanelTemplate>
                </GridView.ItemsPanel>
                <GridView.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Height="80" Width="80" Text="{Binding}"/>
                    </DataTemplate>
                </GridView.ItemTemplate>
            </GridView>
            
        </Grid>
    </ScrollViewer>
    
我在msdn文档中读到:

水平偏移 类型:i引用[C++]| System.Nullable[.NET] 介于0和ScrollableWidth之间的值,指定内容>应水平滚动的距离

但是我的ScrollableWidth等于零,我不明白为什么


有人知道我的代码出了什么问题吗?

我认为在禁用滚动时,您不能滚动。如果您只是想隐藏滚动条,请执行以下操作:

<ScrollViewer x:Name="horizontalScrollViewer" 
                  Grid.Column="1"
                  Grid.RowSpan="3"
                  HorizontalScrollMode="Enabled"
                  VerticalScrollMode="Enabled"
                  HorizontalScrollBarVisibility="Hidden"
                  VerticalScrollBarVisibility="Hidden">
...
</ScrollViewer>

...

我自己找到了解决方案

我必须在水平滚动查看器上添加水平滚动条可见性选项。这很奇怪,因为我不需要将它添加到垂直的一个。下面是水平滚动查看器的代码:

<ScrollViewer x:Name="horizontalScrollViewer" 
                  Grid.RowSpan="3"
                  Grid.Column="1"
                  HorizontalScrollMode="Disabled"
                  HorizontalScrollBarVisibility="Auto"
                  VerticalScrollMode="Disabled">

不,这不是我的目标。垂直滚动查看器是完全相同的,它可以工作。出于我的目的,我不能使用scrollviewer滚动,我必须检测网格上的操纵事件,然后使用ChangeView方法以编程方式滚动元素。不幸的是,水平滚动查看器无法工作
<ScrollViewer x:Name="horizontalScrollViewer" 
                  Grid.RowSpan="3"
                  Grid.Column="1"
                  HorizontalScrollMode="Disabled"
                  HorizontalScrollBarVisibility="Auto"
                  VerticalScrollMode="Disabled">