1
我在ScrollViewer中有一些控件组。我需要这个控件之一来冻结垂直滚动。我该怎么做呢?垂直滚动时的冻结控制
我在ScrollViewer中有一些控件组。我需要这个控件之一来冻结垂直滚动。我该怎么做呢?垂直滚动时的冻结控制
通过一些创造性的使用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>
谢谢,但这不起作用。垂直滚动条从不可见。即使是访问垂直滚动条的工作,也应该首先水平滚动到右侧。这对我来说不合适。 – vkrzv 2011-12-27 14:35:48
你是什么意思冻结? – snurre 2011-12-27 13:55:06
snurre,我的意思是不与其他控件一起滚动。例如在DataGrid列标题不会在垂直滚动时移动。 – vkrzv 2011-12-27 14:00:23
您应该将控件移出ScrollViewer,只保留实际需要在其中滚动的项目。 – snurre 2011-12-27 14:10:35