2017-12-18 238 views
-1

我建立使用WPF,这样的垂直应用时间表: enter image description hereWPF如何使控制始终在最前面,并留在查看用户向下滚动后

该应用程序分为2个边,上左边是圆圈的日期,右边是细节。

让我们说在我的屏幕上,我只能看到左边的两个圆圈,右边是一些非常长的细节。我想要实现的是,当我向下滚动时,第一个圆圈在屏幕上移动,然后卡在顶部,而不是离开我的视野。

这就像电报在Android上,发件人的显示画面将永远在最前面,无论用户向上或向下滚动,直到下一个发件人的显示画面的用武之地。

我希望我能解释自己清晰。我已经设法在WPF中创建应用程序,现在我想要做上述增强,但我不知道从哪里开始。

编辑: 这里有两张图片来解释我想达到什么。

之前向下滚动

Before scrolling down

向下滚动

After scrolling down

+0

有没有实现这样的事情的本机控件,您可能必须创建自己的自定义控件的这个实例。 –

回答

0

,我能想到的是使用一个HeaderedItemsControl非常简单的解决方案后。这将允许您将顶部项目设置为标题,将所有其他项目设置为列表项目。

<Grid> 

     <HeaderedItemsControl> 
      <HeaderedItemsControl.Template> 
       <ControlTemplate TargetType="{x:Type HeaderedItemsControl}"> 
        <Border> 
         <Grid> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="Auto" /> 
           <RowDefinition Height="Auto" /> 
           <RowDefinition /> 
          </Grid.RowDefinitions> 
          <ContentPresenter ContentSource="Header" /> 
          <!--<Separator Grid.Row="1" />--> 
          <ScrollViewer Grid.Row="2" VerticalScrollBarVisibility="Visible"> 
           <ItemsPresenter /> 
          </ScrollViewer> 
         </Grid> 
        </Border> 
       </ControlTemplate> 
      </HeaderedItemsControl.Template> 
      <HeaderedItemsControl.Header>Mark</HeaderedItemsControl.Header> 
      <HeaderedItemsControl.Items> 
       <system:String>Mark2</system:String> 
       <system:String>Mark3</system:String> 
       <system:String>Mark4</system:String> 
       <system:String>Mark5</system:String> 
       <system:String>Mark6</system:String> 
       <system:String>Mark7</system:String> 
       <system:String>Mark7</system:String> 
      </HeaderedItemsControl.Items> 
     </HeaderedItemsControl> 
    </Grid> 
相关问题