c# - How to link a slider value to the FontSize of a textblock and store that value in a ApplicationData variable -


i hope can me solve problem. have simple metro app. textblock named mytextblock placed in homepageview page. xaml:

<textblock x:name="mytextblock" text="hello" horizontalalignment="center" verticalalignment="top" style="{staticresource timestyle}" textalignment="center" fontsize="300"  rendertransformorigin="0.5,0.5" margin="11,55,3,0"  manipulationmode="all"> 

this loadstate in homepageview code behind:

 protected override void loadstate(object navigationparameter, dictionary<string, object> pagestate)         {             try             {                 double? mytextblockvalue = (double?)applicationdata.current.localsettings.values["mytextblocksize"];                 if (mytextblockvalue != null)                 {                     mytextblock.fontsize = (double)mytextblockvalue;                 }             }             catch             {              }         } 

i built settings pane (charm bar -> settings -> settings) named settingspage in slider named timeslider placed. xaml:

<slider x:name="timeslider" width="257" minimum="1" maximum="600" loaded="timeslider_loaded" valuechanged="timeslider_valuechanged" /> 

and these slider loaded , valuechanged methods placed in settingspage codebehind:

 private void timeslider_loaded(object sender, routedeventargs e)         {             var slideristance = sender slider;             double? storedsize = (double?)applicationdata.current.localsettings.values["mytextblocksize"];             if (storedsize != null && storedsize != 1)                 slideristance.value = (double)storedsize;             else                 slideristance.value = 300;         }          private void timeslider_valuechanged(object sender, rangebasevaluechangedeventargs e)         {             var slideristance = sender slider;             applicationdata.current.localsettings.values["mytextblocksize"] = slideristance.value double?;             var _frame = window.current.content frame;             _frame.navigate(_frame.content.gettype());             _frame.goback();         } 

you can download complete solution here on skydrive: https://skydrive.live.com/redir?resid=1b721133dc03e67c!7350

in way, linked fontsize property of mytextblock (in homepageview page) value property of slider (in settingspage page), user can change property @ runtime. also, property stored in mytextblocksize applicationdata variable preserve value when app closed , reopened.

the solution works problem is: when enter settings pane (charm bar -> settings -> settings) , change textblock fontsize property through slider, come homepageview , reopen settings pane, fontsize property reinitialized original value doesn't keep previous (user selected) value. can fix code please? thank in advance.

you have add 1 condition if (slideristance.value != 1) in timeslider_valuechanged event

private void timeslider_valuechanged(object sender, rangebasevaluechangedeventargs e) {     var slideristance = sender slider;     if (slideristance.value != 1)         applicationdata.current.localsettings.values["mytextblocksize"] = slideristance.value double?;     var _frame = window.current.content frame;     _frame.navigate(_frame.content.gettype());     _frame.goback(); } 

Comments

Popular posts from this blog

ios - iPhone/iPad different view orientations in different views , and apple approval process -

java Extracting Zip file -

C# WinForm - loading screen -