WrapPanel水平方向不起作用

时间:2014-11-21 09:09:12

标签: wpf listview scroll kinect wrappanel

新版本的kinect不存在旧的kinectScrollviewer所以我使用了带有listView图像的ScrollViewer。问题是隐藏ScrollbarVisibility或水平滚动时不可滚动,如果我使用SelectionChanged它可以正常使用鼠标,但如果我在第一次点击选择区域后使用手势不会消失,所以我不选择元素 我只会水平滚动(所以我已禁用垂直),但你的代码也不会用手势滚动。点击也不起作用。 如果我使用orientation =" Vertical"它是垂直滚动的(尽管在示例中使用此设置滚动水平),但如果我使用orientation =" Horizo​​ntal"它没有用:(

 <k:KinectRegion x:Name="ChoiceExercise" Background="Black" >
            <DockPanel>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <k:KinectUserViewer Grid.Row="0" Height="100"/>
                    <ContentControl Grid.Row="1" x:Name="navigationRegion">
                        <Grid x:Name="kinectGrid">
                            <ScrollViewer Grid.Row="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" k:KinectRegion.IsScrollInertiaEnabled="True">
                                <ListView Grid.Row="0" x:Name="listViewExercise" SelectionChanged="listViewExercise_SelectionChanged" BorderThickness="0" Background="Black" >
                                    <ListView.ItemsPanel>
                                        <ItemsPanelTemplate>
                                            <WrapPanel VerticalAlignment="Center" Orientation="Horizontal" />
                                        </ItemsPanelTemplate>
                                    </ListView.ItemsPanel>
                                </ListView>
                            </ScrollViewer>
                        </Grid>
                    </ContentControl>
                </Grid>
            </DockPanel>
        </k:KinectRegion>

1 个答案:

答案 0 :(得分:1)

ListView已包含ScrollViewer作为默认模板的一部分,您需要通过将附加的ScrollViewer.VerticalScrollBarVisibility属性设置为Disabled来禁用此行为

<Grid>
   <Grid.RowDefinitions>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="*"/>
   </Grid.RowDefinitions>
   <k:KinectUserViewer Grid.Row="0" Height="100"/>
   <ContentControl Grid.Row="1" x:Name="navigationRegion">
      <Grid x:Name="kinectGrid">
         <ListView 
             Grid.Row="0" 
             ScrollViewer.VerticalScrollBarVisibility="Disabled" 
             x:Name="listViewExercise" 
             SelectionChanged="listViewExercise_SelectionChanged" 
             BorderThickness="0" 
             Background="Black" >
            <ListView.ItemsPanel>
               <ItemsPanelTemplate>
                  <WrapPanel VerticalAlignment="Center" Orientation="Horizontal" />
               </ItemsPanelTemplate>
            </ListView.ItemsPanel>
         </ListView>
      </Grid>
   </ContentControl>
</Grid>

水平方向的WrapPanel也意味着水平堆叠项目,直到项目无法适应,然后移动到下一行。既然你想要水平滚动我认为水平StackPanel会更适合你。

<ItemsPanelTemplate>
    <StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>