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