silverlight - Scrollable form control in Windows Phone 8 -


how make scrollable form similar of phone contact input panel in windows phone 8.1?
current method of stackpanel inside scrollviewer restricts scrolling when sip launches , have hit button choose other textboxes.
not idea ux situation , i've tried few options of web.

  1. increasing stackpanel's height beyond necessary size 350 pixels - didn't work, displaces form unevenly , doesn't return normal
  2. creating listbox suggested in site online didn't change either
  3. increasing down margin of last control didn't either

check below code has worked fine me.

chat.xaml.cs

using system; using system.componentmodel; using system.windows.controls; using system.windows.input; using system.linq; using system.windows; using system.windows.data; using system.windows.media; using microsoft.phone.controls; using phoneapplicationpage = microsoft.phone.controls.phoneapplicationpage;  namespace liv.view { // resharper disable once redundantextendslistentry     public partial class chat : phoneapplicationpage     {         private bool _flag;         public chat()         {             initializecomponent();         }                  #region static chat header workaround          public double oldheight;         private translatetransform _translatetransform;          #region translatey dependency property         public static readonly dependencyproperty translateyproperty = dependencyproperty.register(             "translateyproperty", typeof(double), typeof(chat), new propertymetadata(default(double), propertychangedcallback));          private static void propertychangedcallback(dependencyobject o, dependencypropertychangedeventargs e)         {             var chat = o chat;             if (chat != null)             {                 chat.updatetopmargin((double)e.newvalue);             }         }          public double translatey         {             { return (double)getvalue(translateyproperty); }             set { setvalue(translateyproperty, value); }         }         #endregion          private void chatpage_onloaded(object sender, routedeventargs e)         {             var transform = ((application.current).rootvisual).rendertransform transformgroup;             if (transform != null)             {                 _translatetransform = transform.children.oftype<translatetransform>().firstordefault();                 if (_translatetransform != null)                 {                     var binding = new binding("y")                     {                         source = _translatetransform                     };                     bindingoperations.setbinding(this, translateyproperty, binding);                 }             }         }          private void updatetopmargin(double translatey)         {             layoutroot.margin = new thickness(0, -translatey, 0, 0);         }          #endregion      } } 

chat.xaml

<phone:phoneapplicationpage x:class="liv.view.chat"                             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"                             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"                             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"                             xmlns:phone="clr-namespace:microsoft.phone.controls;assembly=microsoft.phone"                             xmlns:shell="clr-namespace:microsoft.phone.shell;assembly=microsoft.phone"                              fontfamily="{staticresource phonefontfamilynormal}"                             fontsize="{staticresource phonefontsizenormal}"                             foreground="black"                             loaded="chatpage_onloaded"                             orientation="portrait"                             supportedorientations="portrait"                             shell:systemtray.backgroundcolor="#ff5cbfbb"                             shell:systemtray.foregroundcolor="white"                             shell:systemtray.isvisible="true"                             mc:ignorable="d">      <grid x:name="layoutroot" background="white">         <grid.rowdefinitions>             <rowdefinition height="auto" />             <rowdefinition height="*" />         </grid.rowdefinitions>         <grid background="#ff5cbfbb">             <grid.columndefinitions>                 <columndefinition />                 <columndefinition width="auto" />             </grid.columndefinitions>             <stackpanel>                 <textblock foreground="white" text="{binding chatuser.name}" />                 <textblock foreground="white" text="{binding chattime}" />             </stackpanel>             <button grid.column="1"                     borderthickness="0"                     command="{binding terminatecommand}"                     foreground="white">                 end chat             </button>         </grid>         <grid x:name="contentpanel" grid.row="1">             <grid.rowdefinitions>                 <rowdefinition height="*" />                 <rowdefinition height="auto" />             </grid.rowdefinitions>             <listbox x:name="messagelistbox"                     horizontalalignment="stretch"                     verticalalignment="stretch"                     itemssource="{binding messages}"                     scrollviewer.verticalscrollbarvisibility="visible"                     style="{staticresource bottomlistboxstyle}">              </listbox>             <stackpanel x:name="messagetextpanel"                         grid.row="1"                         background="#ff5cbfbb">                 <grid margin="0,0,0,-10">                     <textblock fontsize="15" text="{binding userstatus}" />                 </grid>                 <grid>                     <grid.columndefinitions>                         <columndefinition />                         <columndefinition width="auto" />                     </grid.columndefinitions>                     <textbox></textbox>                 </grid>             </stackpanel>         </grid>         </grid>     </grid> </phone:phoneapplicationpage> 

check: scrollviewer not scroll while keyboard active
when normal

normal

when sip open
sipopen


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -