xaml - slider control and textblock control interaction-Metro apps -


i trying set slider control value text block's text property through {binding} on xaml.

<slider   valuechanged="slider_valuechanged_1"    value= "{binding elementname=componenttextblockvalue,path=text}"   stepfrequency="25"/>   

do need converter set slider's value . binding seems work sometimes doesn't work. sometimes,the slider doesn't set value text block value.

since bind slider's value directly without value converter, suspect binding broken when text not number or out of range.

you can prevent creating value converter prevent bad value bound, binding work.

here example:

public class texttoslidervalueconverter : ivalueconverter {     public double maximumslidervalue { get; set; }     public double minimumslidervalue { get; set; }      public object convert(object value, type targettype, object parameter, string language)     {         double slidervalue;          if (double.tryparse(value string, out slidervalue)             && slidervalue <= maximumslidervalue && slidervalue >= minimumslidervalue)         {             return slidervalue;         }         else         {             return 0.0;         }     }      public object convertback(object value, type targettype, object parameter, string language)     {         throw new notimplementedexception();     } } 

here xaml:

<page     x:class="stovfslidertextbox.mainpage"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:local="using:stovfslidertextbox"     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"     mc:ignorable="d">      <page.resources>         <local:texttoslidervalueconverter x:key="txttoslidervalue" maximumslidervalue="100" minimumslidervalue="0"/>     </page.resources>     <grid background="{staticresource applicationpagebackgroundthemebrush}">         <stackpanel>             <slider value= "{binding elementname=componenttextblockvalue,path=text, converter={staticresource txttoslidervalue}, converterparameter=slider}" stepfrequency="25"/>             <textbox x:name="componenttextblockvalue" width="50"/>         </stackpanel>     </grid> </page> 

the texttoslidervalueconverter makes sure slider valid value. if not use default slider.maximum or slider.minimum, can modify values accordingly.

hope helps!


Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -