Vertical scroll when I scroll a Liew in UWP XAML C# -


i have problem in uwp . have page contains grid (it holds bit of top of page) , below grid there pivot contains 2 pivot items , every pivot item contains list view.

i want when scroll vertically(up down) in these list views original page scroll when top grid hidden.

here's i'm looking for: screen shot of want

and here source of xaml :

<page x:name="thispage" x:class="bindingsample2.pagecategories.pageartistinfo" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:bindingsample2" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:ignorable="d">  <grid background="{themeresource applicationpagebackgroundthemebrush}">     <grid>         <grid.rowdefinitions>             <rowdefinition height="auto"/>             <rowdefinition height="*"/>         </grid.rowdefinitions>         <relativepanel grid.row="0">             <grid x:name="artistposter" height="200" relativepanel.alignleftwithpanel="true" relativepanel.alignrightwithpanel="true">                 <stackpanel x:name="artistinfogrid" padding="20" verticalalignment="bottom" horizontalalignment="stretch" orientation="horizontal">                     <stackpanel.background>                         <lineargradientbrush endpoint="0.5,0" startpoint="0.5,1">                             <gradientstop color="{staticresource appbackgroundcolor }"/>                             <gradientstop color="transparent" offset="0.85"/>                             <gradientstop color="transparent" offset="1"/>                         </lineargradientbrush>                     </stackpanel.background>                     <grid>                         <ellipse x:name="artistthemb" stretch="uniform" height="100" width="100">                             <ellipse.fill>                                 <imagebrush stretch="fill" imagesource="ms-appx:///assets/wslogo.png"/>                             </ellipse.fill>                         </ellipse>                     </grid>                     <grid x:name="moreinfo" verticalalignment="center" margin="10,0">                         <grid.rowdefinitions>                             <rowdefinition height="auto"/>                             <rowdefinition height="auto"/>                         </grid.rowdefinitions>                         <textblock x:name="artistname" grid.row="0" text="artistname"/>                         <textblock x:name="artistfans" grid.row="1" text="artistfans"/>                     </grid>                 </stackpanel>             </grid>         </relativepanel>         <pivot height="{binding elementname=thispage,path=actualheight,updatesourcetrigger=propertychanged,mode=twoway}" x:name="pagepivot" grid.row="1" selectionchanged="pagepivot_selectionchanged">             <pivotitem header="albums">                 <grid>                     <grid.resources>                         <collectionviewsource x:name="artistalbumscvs"/>                     </grid.resources>                     <listview x:name="featuredalbumslist" itemssource="{binding source={staticresource artistalbumscvs}}"               selectionmode="none" isitemclickenabled="true"                           itemclick="artistalbumslist_itemclick" itemcontainerstyle="{staticresource listviewcontainerstrecher}">                         <listview.itemtemplate>                             <datatemplate >                                 <grid>                                     <grid.columndefinitions>                                         <columndefinition width="80"/>                                         <columndefinition width="*"/>                                     </grid.columndefinitions>                                     <image grid.column="0" maxwidth="60" source="{binding poster_60x60}" horizontalalignment="center"/>                                     <grid grid.column="1" verticalalignment="center">                                         <grid.rowdefinitions>                                             <rowdefinition height="auto"/>                                             <rowdefinition height="auto"/>                                         </grid.rowdefinitions>                                         <textblock grid.row="0" text="{binding artist}"/>                                         <textblock grid.row="1" text="{binding album}"/>                                     </grid>                                 </grid>                             </datatemplate>                         </listview.itemtemplate>                     </listview>                 </grid>             </pivotitem>             <pivotitem header="songs">                 <grid>                     <grid.resources>                         <collectionviewsource x:name="artistsongscvs"/>                     </grid.resources>                     <listview x:name="featuredlist" itemssource="{binding source={staticresource artistsongscvs}}" itemtemplate="{staticresource musicitemdatatemplate}"               selectionmode="none" isitemclickenabled="true" scrollviewer.bringintoviewonfocuschange="true"                           itemclick="artistsongslist_itemclick" itemcontainerstyle="{staticresource listviewcontainerstrecher}">                     </listview>                 </grid>             </pivotitem>         </pivot>         <visualstatemanager.visualstategroups>             <visualstategroup x:name="screensizes">                 <visualstate>                     <visualstate.statetriggers>                         <adaptivetrigger minwindowheight="550"/>                     </visualstate.statetriggers>                     <visualstate.setters>                         <setter target="artistposter.height" value="200"/>                     </visualstate.setters>                 </visualstate>                 <visualstate>                     <visualstate.statetriggers>                         <adaptivetrigger minwindowheight="0"/>                     </visualstate.statetriggers>                     <visualstate.setters>                         <setter target="artistposter.height" value="140"/>                     </visualstate.setters>                 </visualstate>             </visualstategroup>         </visualstatemanager.visualstategroups>     </grid> </grid> 

regards

i want when scroll vertically(up down) in these list views original page scroll when top grid hidden.

you can find scrollviewer in each listviewer visualtreehelper, register viewchanged event of scrollviewer in loaded event of listview. example here:

private void featuredlist_loaded(object sender, routedeventargs e) {     var featuredlistscrollviewer = findchildoftype<scrollviewer>(featuredlist);     if (featuredlistscrollviewer != null)         featuredlistscrollviewer.viewchanged += scrollviewer_viewchanged; }  private void featuredalbumslist_loaded(object sender, routedeventargs e) {     var featuredalbumslistscrollviewer = findchildoftype<scrollviewer>(featuredalbumslist);     if (featuredalbumslistscrollviewer != null)         featuredalbumslistscrollviewer.viewchanged += scrollviewer_viewchanged; }  private void scrollviewer_viewchanged(object sender, scrollviewerviewchangedeventargs e) {     if (e.isintermediate)         rtpanel.visibility = visibility.collapsed;     else         rtpanel.visibility = visibility.visible; }  public static t findchildoftype<t>(dependencyobject root) t : class {     var queue = new queue<dependencyobject>();     queue.enqueue(root);     while (queue.count > 0)     {         dependencyobject current = queue.dequeue();         (int = 0; < visualtreehelper.getchildrencount(current); i++)         {             var child = visualtreehelper.getchild(current, i);             var typedchild = child t;             if (typedchild != null)             {                 return typedchild;             }             queue.enqueue(child);         }     }     return null; } 

as can see, in viewchanged event, if property isintermediate of scrollviewerviewchangedeventargs true, manipulation @ intermediate stage , not yet final; if false, manipulation final.


Comments