Wednesday, 15 August 2012

c# - Conditionally set scrollbar button size -



c# - Conditionally set scrollbar button size -

i want alter size of scrollbars (arrow buttons , thumb) in application, dependent on condition. status bool variable (settings.touchscreenmode) in viewmodel of main window. trigger, this:

<style.triggers> <datatrigger binding="{binding datacontext.settings.touchscreenmode, relativesource={relativesource ancestortype=window}}" value="true"> <setter property="arrowbuttonwidth" value="30" /> </datatrigger> </style.triggers>

i found way set systemparameters cannot utilize in trigger, scrollbar changed , not when bool-value true:

<system:double x:key="{x:static systemparameters.horizontalscrollbarheightkey}">30</system:double> <system:double x:key="{x:static systemparameters.horizontalscrollbarbuttonwidthkey}">30</system:double> <system:double x:key="{x:static systemparameters.verticalscrollbarwidthkey}">30</system:double> <system:double x:key="{x:static systemparameters.verticalscrollbarbuttonheightkey}">30</system:double>

is there way without replacing entire command template of scrollbar?

you can leverage layouttransform accomplish same

so utilize scaletransform in layouttransform , done touch screen

eg

class="lang-xml prettyprint-override"><stackpanel orientation="horizontal"> <scrollbar margin="4" /> <scrollbar margin="4"> <scrollbar.layouttransform> <scaletransform scalex="2" scaley="2" /> </scrollbar.layouttransform> </scrollbar> </stackpanel>

result

you may perhaps utilize as

class="lang-xml prettyprint-override"> <style.triggers> <datatrigger binding="{binding datacontext.settings.touchscreenmode, relativesource={relativesource ancestortype=window}}" value="true"> <setter property="layouttransform"> <setter.value> <scaletransform scalex="2" scaley="2" /> </setter.value> </setter>> </datatrigger> </style.triggers>

c# wpf triggers

No comments:

Post a Comment