c# - VisualStateManager added via code behind does not triggered Windows 10 -


i have button created dynamically via code behind. reason because want entrancethemetransition repeat each time button visible.

<grid x:name="gridroot">     <grid x:name="gridnextkitty"  visibility="{binding isnextkittybuttonvisible, converter={staticresource booleantovisibilityconverter}}">         <grid.childrentransitions>             <transitioncollection>                 <entrancethemetransition fromhorizontaloffset="1000" fromverticaloffset="0" isstaggeringenabled="false"/>             </transitioncollection>         </grid.childrentransitions>         <!--<button x:name="btnnextkitty" content="next kitty" fontsize="40" command="{binding btnnextkittyclick}" style="{staticresource buttonmenustyle}" background="#74b025" width="300" height="80" margin="24" horizontalalignment="center" verticalalignment="center"/>-->     </grid> </grid> 

the button added this

            if (viewmodel.isnextkittybuttonvisible)             {                 btnnextkitty = new button()                 {                     content = "next kitty",                     fontsize = 40,                     command = viewmodel.btnnextkittyclick,                     style = (style)application.current.resources["buttonmenustyle"],                     background = new solidcolorbrush(color.fromargb(255, 116, 176, 37)),                     width = 300,                     height = 80,                     margin = new thickness(24),                     horizontalalignment = horizontalalignment.center,                     verticalalignment = verticalalignment.center                 };                  gridnextkitty.children.add(btnnextkitty);                 addvisualstatemanager();              }             else             {                 gridnextkitty.children.remove(btnnextkitty);                 visualstatemanager.getvisualstategroups(gridroot).remove(vsg);             } 

i added thevisualstatemanager via code behind statetriggers true though minwindowwidth < 500.

    private void addvisualstatemanager()     {         vsg = new visualstategroup();         visualstate vs = new visualstate();         vs.statetriggers.add(new adaptivetrigger         {             minwindowwidth = 500,                         });          vs.setters.add(new setter         {             target = new targetpropertypath             {                 path = new propertypath("(frameworkelement.width)"),                 target = btnnextkitty             },              value = "240"         });          vsg.states.add(vs);         visualstatemanager.getvisualstategroups(gridroot).add(vsg);     } 

how make trigger work via code behind?

you should add default state width 0 500. example, empty visual state.

vsg.states.add(vs);  vs = new visualstate(); vs.statetriggers.add(new adaptivetrigger {     minwindowwidth = 0, });  vsg.states.add(vs); 

Comments