2011-12-27 50 views
1

我在ScrollViewer中有一些控件组。我需要这个控件之一来冻结垂直滚动。我该怎么做呢?垂直滚动时的冻结控制

+0

你是什么意思冻结? – snurre 2011-12-27 13:55:06

+0

snurre,我的意思是不与其他控件一起滚动。例如在DataGrid列标题不会在垂直滚动时移动。 – vkrzv 2011-12-27 14:00:23

+1

您应该将控件移出ScrollViewer,只保留实际需要在其中滚动的项目。 – snurre 2011-12-27 14:10:35

回答

0

通过一些创造性的使用ListView,你可以达到预期的效果。您可能还需要调整一些ListView模板以避免某些ListView特定的行为。

<ListView ScrollViewer.CanContentScroll="False"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn> 
        <GridViewColumn.HeaderTemplate> 
         <DataTemplate> 
          <!-- Header/Frozen content goes here --> 
          <!-- Using Border as example --> 
          <Border Width="1000" Height="40"> 
           <Border.Background> 
            <LinearGradientBrush> 
             <GradientStop Offset="0" Color="Lime"/> 
             <GradientStop Offset="1" Color="Black"/> 
            </LinearGradientBrush> 
           </Border.Background> 
          </Border> 
         </DataTemplate> 
        </GridViewColumn.HeaderTemplate> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 
     <ListViewItem> 
      <ListViewItem.Style> 
       <Style TargetType="{x:Type ListViewItem}"> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate> 
           <!-- Other content goes here --> 
           <!-- Using Border as example --> 
           <Border Width="1000" Height="1000"> 
            <Border.Background> 
             <LinearGradientBrush> 
              <GradientStop Offset="0" Color="White"/> 
              <GradientStop Offset="1" Color="Black"/> 
             </LinearGradientBrush> 
            </Border.Background> 
           </Border> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </ListViewItem.Style> 
     </ListViewItem> 
    </ListView> 
+0

谢谢,但这不起作用。垂直滚动条从不可见。即使是访问垂直滚动条的工作,也应该首先水平滚动到右侧。这对我来说不合适。 – vkrzv 2011-12-27 14:35:48